Как получить доступ к свойствам объекта PHP?
Кроме того, в чем разница между доступом к свойству объекта с $this->$property1
vs. $this->property1
?
Когда я пытаюсь использовать $this->$property1
я получаю следующую ошибку:
'PHP: не удается получить доступ к пустому свойству'.
В документации PHP по свойствам объекта есть один комментарий, который упоминает об этом, но комментарий действительно не объясняет подробно.
$property1
// специфическая переменная $this->property1
// специальный атрибут Общее использование классов не имеет "$"
иначе вы вызываете переменную с именем $property1
которая может принимать любое значение.
Пример:
class X { public $property1 = 'Value 1'; public $property2 = 'Value 2'; } $property1 = 'property2'; //Name of attribute 2 $x_object = new X(); echo $x_object->property1; //Return 'Value 1' echo $x_object->$property1; //Return 'Value 2'
$this->property1
означает:
использовать объект и получить свойство variable1, связанное с этим объектом
$this->$property1
означает:
оценить строку $ property1 и использовать результат, чтобы получить переменную с именем $ property1, связанным с этим объектом
property1
– это строка, а $property1
– переменная. Поэтому при доступе к $this->$property1
PHP ищет содержимое переменной с именем $property1
и потому что он (возможно) не существует, он пуст, поэтому вы Cannot access empty property
ошибку Cannot access empty property
.