Указатель this
Написал для теста простой код, он хоть и выводит цифру 7, но выводит перед этой цифрой ошибку, почему так?
Код:
class A{ Но я же инициализировал свойство x1, почему ошибка? |
удалено.
|
судя по всем на PHP
и ошибка в том, что к свойствам надо обращаться так: $this->x1 а не как вы . хотя ваш способ записи ИНОГДА, очень редко также применим. следующая запись означает $this->$x1 1)взять ЛОКАЛЬНУЮ переменную $x1(ваш код выдает ошибку в этот момент, так как перменная не существует) 2)привести эту переменную к строке(несуществующая переменная приводится к пустой строке) 3)взять свойство объекта, имеющее полученное из строки имя(в данном случае свойство с пустым именем. но такие свойства недопустимы,и выпадает Fatal error) пример на понимание: <?php class A{ var $x1, $x2; function setname(){ $x1 = 'x2'; $this->x1 = 1;//записывает в $this->x1 $this->$x1 = 2;//записывает в $this->x2, так как $x1 = 'x2'; $this->{$x1} = 2;//ТО же самое, что и перед этим, но более универсальная запись $this->{"x2"} = 2;//и еще один способ записи $this->{"x".(2)} = 2;//и еще один способ записи echo $this->x1.'<br />'; echo $this->x2.'<br />'; } } $object = new A; $object->setname(); |
Часовой пояс GMT +3, время: 11:22. |