我一直在寻找这个答案时遇到了麻烦,因为我不太清楚如何用它来表达。我是PHP的新手,仍然站稳脚跟。我正在编写一个页面,其中包含一个具有属性名称的类。当我最初编写页面时没有类,所以我只有一个名为$name
的变量。当我把它封装在一个类中时,我意外地将它改为$myClass->$name
。它让我知道我需要的语法是$myClass->name
。它花了这么长时间的原因是我一直得到的错误是“尝试访问一个null属性”或者沿着那些方向的东西。该错误让我相信这是一个数据填充错误。
我的问题是$myClass->$name
是否有正确的含义?换句话说,是否有时间使用它以及它不会产生语法错误的原因?如果是这样,那段代码的语义是什么?如果有效,我什么时候使用它?如果它无效,是否有理由不创建语法错误?
答案 0 :(得分:3)
是
$name = "bar";
echo $myClass->$name; //the same as $myClass->bar
我同意错误消息不是很有帮助。
答案 1 :(得分:2)
也可以使用变量属性名访问类属性。变量属性名称将在进行调用的范围内解析。例如,如果您有一个表达式,例如$
foo->$bar
,那么将检查$bar
和的本地范围,其值将用作属性的名称$foo
。如果$bar
是数组访问权限,也是如此。
答案 2 :(得分:0)
$myClass->$name
是“可变属性名称”。它以字符串形式访问名称在变量$name
中的属性。您收到“null属性”错误的原因是您没有名为$name
的变量(或null
)