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

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

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

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

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

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

Ответ 1

  • $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'

Ответ 2

$this->property1 означает:

использовать объект и получить свойство variable1, связанное с этим объектом

$this->$property1 означает:

оценить строку $property1 и использовать результат, чтобы получить переменную с именем $property1, связанным с этим объектом

Ответ 3

property1 - это строка, а $property1 - переменная. Поэтому при доступе к $this->$property1 PHP ищет содержимое переменной с именем $property1 и потому что он (возможно) не существует, он пуст, поэтому вы получаете ошибку Cannot access empty property.