Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.08.2011, 17:33
Аспирант
Отправить личное сообщение для romantik2011 Посмотреть профиль Найти все сообщения от romantik2011
 
Регистрация: 20.07.2011
Сообщений: 50

Поиск неизвестного свойства функцией __set()
class A{
	public $user;
	
	function __set($n,$v){
	 	$this->user[$n] = $v;
	}
	function __get($n){
	return $this->user[$n];
	}
}

$o = new A();
$o->name = "John";
echo $o->name;


Цитата:
Результат: John
Когда интепретатор PHP увидел в коде что мы обращаемся к неизвестному свойству, он обратился в класс, с надеждой найти функцию __set()
Эта функция имеет 2 параметра: 01)Название свойства; 02)Значение свойства.

В этом месте кода, как переменная $user, которая была объявлена как приватное свойство в классе, как она могла превратится в массив если она была объявлена как обычное закрытое свойство?
function __set($n,$v){
	 	$this->user[$n] = $v;
	}

В этом месте кода, если функция __get() вызывается только в том случаи когда была вызвана функция __set() и в функцию __get()
передаётся значение свойства, то значение, которое попало в __set(). Как снова туда может лететь массив ,если функция ГЭТ принимает только свойство класса?
function __get($n){
	return $this->user[$n];
	}
Ответить с цитированием
  #2 (permalink)  
Старый 03.08.2011, 17:50
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Это уже не смешно. Может, стоит изучить основы языка сначала, а уже потом ООП, и прочее, до чего ты еще не дорос судя по детским вопросам.

$a['test'] = 21;
о_О а как переменная $a стала массивом! Пипец..
Ответить с цитированием
  #3 (permalink)  
Старый 03.08.2011, 17:52
Аспирант
Отправить личное сообщение для romantik2011 Посмотреть профиль Найти все сообщения от romantik2011
 
Регистрация: 20.07.2011
Сообщений: 50

То есть получается переопределили переменную с неизвестного типа public $user; переопределили в массив внутри функции __set()?
Ответить с цитированием
  #4 (permalink)  
Старый 03.08.2011, 17:56
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Я же говорю: читаем основы языка, в частности про типизацию переменных в PHP.
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2011, 18:03
Аспирант
Отправить личное сообщение для romantik2011 Посмотреть профиль Найти все сообщения от romantik2011
 
Регистрация: 20.07.2011
Сообщений: 50

Попробовал сделать вот так, такое не сработало, тоже переопределить захотел.
$u = 5;
$m = "Салат";
echo $m[$u];
Ответить с цитированием
  #6 (permalink)  
Старый 03.08.2011, 18:05
Аспирант
Отправить личное сообщение для romantik2011 Посмотреть профиль Найти все сообщения от romantik2011
 
Регистрация: 20.07.2011
Сообщений: 50

Сработало только вот так:
$u = 5;
$m = "Салат";
$m[$u] = $u;
echo $m[$u];


Почему? Разве так правильно писать $m[$u] = $u;?
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2011, 18:31
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Ты, издеваешься, очевидно.
Ответить с цитированием
  #8 (permalink)  
Старый 03.08.2011, 19:26
Аспирант
Отправить личное сообщение для romantik2011 Посмотреть профиль Найти все сообщения от romantik2011
 
Регистрация: 20.07.2011
Сообщений: 50

Всё спасибо, прочитал про динамическую типизацию, всё понял. Всем спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск неизвестного слова KOPCAP Общие вопросы Javascript 6 29.06.2009 13:32