如何访问类对象属性? $this->$property1 给出“无法访问空属性”错误[已关闭]

问题描述 投票:0回答:3

如何访问 PHP 对象的属性?

此外,访问对象的属性与

$this->$property1
$this->property1

当我尝试使用

$this->$property1
时,出现以下错误:

“PHP:无法访问空属性”。

PHP 的 documentation 关于对象属性的一个注释提到了这一点,但该注释并没有真正深入解释。

php object oop properties getter-setter
3个回答
41
投票
  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'

18
投票

$this->property1
的意思是:

使用该对象并获取绑定到该对象的变量property1

$this->$property1
的意思是:

计算字符串 $property1 并使用结果来获取绑定到该对象的 $property1 结果命名的变量


3
投票

property1
是一个字符串,而
$property1
是一个变量。因此,当访问
$this->$property1
时,PHP 会查找名为
$property1
的变量的内容,并且因为它(可能)不存在,所以它是空的,所以这就是您收到
Cannot access empty property
错误的原因。

© www.soinside.com 2019 - 2024. All rights reserved.