Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Поиск неизвестного свойства функцией __set()
Когда интепретатор PHP увидел в коде что мы обращаемся к неизвестному свойству, он обратился в класс, с надеждой найти функцию __set()
Эта функция имеет 2 параметра: 01)Название свойства; 02)Значение свойства.
В этом месте кода, как переменная $user, которая была объявлена как приватное свойство в классе, как она могла превратится в массив если она была объявлена как обычное закрытое свойство?
В этом месте кода, если функция __get() вызывается только в том случаи когда была вызвана функция __set() и в функцию __get()
передаётся значение свойства, то значение, которое попало в __set(). Как снова туда может лететь массив ,если функция ГЭТ принимает только свойство класса?
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
romantik2011 пишет:
$user, которая была объявлена как приватное свойство
Очевидно, это не так:
romantik2011 пишет:
public $user;
Далее, ничто не мешает сделать переменную (равно как и свойство) массивом "по требованию" (а именно - в момент, когда будет сделано обращение на запись его индекса в __set) и хранить в нём что угодно.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
romantik2011
Отправлено: 03 Августа, 2011 - 16:52:26
Новичок
Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
То есть получается переопределили переменную с неизвестного типа public $user; переопределили в массив внутри функции __set()? (Добавление)
Попробовал сделать вот так, такое не сработало, тоже переопределить захотел.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.