Каков синтаксис для доступа к свойствам объектов PHP?

Как получить доступ к свойствам объекта PHP?

Кроме того, в чем разница между доступом к свойству объекта с $this->$property1 vs. $this->property1 ?

Когда я пытаюсь использовать $this->$property1 я получаю следующую ошибку:

'PHP: не удается получить доступ к пустому свойству'.

В документации PHP по свойствам объекта есть один комментарий, который упоминает об этом, но комментарий действительно не объясняет подробно.

  1. $property1 // специфическая переменная
  2. $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 .