我刚刚在 PHP 脚本中偶然发现了一个有趣的语法:
echo $foo->{'bar'};
本例中的 $foo 是从 PHP 的 json_decode() 函数返回的对象,但在访问任何对象的公共(public)成员时它都可以正常工作。
我试图找出为什么使用这种语法而不是更常见的语法:
echo $foo->bar;
与第二个示例相比,使用第一个示例中的语法访问类成员是否提供了任何特殊功能?
最佳答案
当您想要将函数名称作为字符串引用时,大括号语法非常有用:
print $foo->{'aMemberFunc'}();
当您想要访问由另一个函数(或变量)提供名称的成员时。
此处 getVarName()
返回一个字符串,可用于引用 $foo 对象内的成员。
print $foo->{getVarName()};
如果没有大括号,它将是 $foo->getVarName()
并且它会尝试运行该方法...使用大括号它具有完全不同的含义。
echo $foo->{'bar'};
和 echo $foo->bar;
据我所知是相同的。
关于php - 在 PHP 中访问类变量的替代语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4163776/