访问PHP对象属性的语法是什么?

时间:2012-09-24 18:39:38

标签: php oop properties getter-setter

如何访问PHP对象的属性?

另外,访问对象的属性有什么区别 $this->$property1$this->property1

当我尝试使用$this->$property1时,我收到以下错误:

  

'PHP:无法访问空属性'。

对象属性上的PHP documentation有一条注释提到了这一点,但评论并没有真正深入解释。

3 个答案:

答案 0 :(得分:11)

$this->property1表示:

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

$this->$property1表示:

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

答案 1 :(得分:10)

  1. $property1 //特定变量
  2. $this->property1 //特定属性
  3. 对类的一般用法是没有"$",否则你调用一个名为$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 :(得分:3)

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