How do you access a PHP object's properties?
Also, what is the difference between accessing an object's property with
$this->$property1
vs. $this->property1
?
When I try to use $this->$property1
I get the following error:
'PHP: Cannot access empty property'.
PHP's documentation on object properties has one comment which mentions this, but the comment doesn't really explain in depth.
$property1
// specific variable$this->property1
// specific attribute
The general use on classes is without "$"
otherwise you are calling a variable called $property1
that could take any value.
Example:
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
means:
use the object and get the variable property1 bound to this object
$this->$property1
means:
evaluate the string $property1 and use the result to get the variable named by $property1 result bound to this object
property1
is a string while $property1
is a variable. So when accessing $this->$property1
PHP looks for contents of the variable named $property1
and because it (probably) doesn't exist it's empty so that's why you get the Cannot access empty property
error.
来源:https://stackoverflow.com/questions/12570899/what-is-the-syntax-for-accessing-php-object-properties