访问 PHP 对象属性的语法是啥? [关闭]

Posted

技术标签:

【中文标题】访问 PHP 对象属性的语法是啥? [关闭]【英文标题】:What is the syntax for accessing PHP object properties? [closed]访问 PHP 对象属性的语法是什么? [关闭] 【发布时间】:2012-09-16 06:13:13 【问题描述】:

如何访问 PHP 对象的属性?

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

当我尝试使用$this->$property1 时出现以下错误:

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

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

【问题讨论】:

取而代之的是本手册页并查找“变量属性名称”部分:php.net/manual/en/language.variables.variable.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'

【讨论】:

如果属性有空格,比如ˋprop nr 1ˋ? 不明白为什么 echo $x_object->$property1;返回“值 2”但不返回“属性 2”...【参考方案2】:

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

【讨论】:

【参考方案3】:

$this->property1 表示:

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

$this->$property1 表示:

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

【讨论】:

@hakra 到手册的链接通常不被视为答案,因为这些链接往往会改变......但是,我同意引用和/或到源的链接将是一个更好的变体一个答案

以上是关于访问 PHP 对象属性的语法是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中,将函数用作类的属性的正确语法是啥? [关闭]

Python中的这个属性语法是啥? [复制]

访问包含在数组中的指向类对象的类成员函数的正确语法是啥?

SQLSTATE [42000]:语法错误或访问冲突:1064 PHP/MySQL [关闭]

将 Vue 对象附加到元素的最推荐语法是啥?

我的 SqlException 的原因是啥:'=' 附近的语法不正确? [关闭]