Каков синтаксис для доступа к свойствам объектов 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
.