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
Форумы портала PHP.SU :: Версия для печати :: Э…!!! __set
Форумы портала PHP.SU » » Вопросы новичков » Э…!!! __set

Страниц (1): [1]
 

1. ytrewq123 - 01 Декабря, 2018 - 12:11:00 - перейти к сообщению
Здравствуйте!
Вот такой вопрос.
Увидел такой код. Думал ошибка, опечатка.
Но всё работает.
PHP:
скопировать код в буфер обмена
  1.  
  2.     public function __set($b, $u)
  3.     {
  4.         if(property_exists($this, $b))
  5.         {
  6.             return $this->$b = $u;
  7.         }
  8.         else
  9.         {
  10.             return $this->$b = 'M';
  11.         }
  12.     }
  13.  


Почему $this->$b такая запись???
(Добавление)
Блииин!!!
Кажется я понял.
Просто $b имя свойство и оно подставляется.
И получается.
$b = имя_свойства;
return $this->$b = 'M'; тоже самое return $this->имя_свойства = 'M';
ТАК???
2. Мелкий - 01 Декабря, 2018 - 16:58:14 - перейти к сообщению

Не удивляет?
Ровно тот же самый принцип и с объектом.

Для чуть более сложных случаев были изменения в поведении php 5.6 vs 7.0: http://php.net/manual/en/migrati...andling.indirect
3. ytrewq123 - 02 Декабря, 2018 - 00:08:13 - перейти к сообщению
Спасибо, я так и понял.
А то испугался. Думал что совсем ничего не понимаю. Как это и куда и почему…
Спасибо.

 

Powered by ExBB FM 1.0 RC1