php - 在 PHP 中访问类变量的替代语法

标签 php json

我刚刚在 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/

相关文章:

python - Django MultiValueDictKeyError 什么时候发生以及如何避免?

php - 传单 map 未填写区域

php - 测试客户端浏览器中是否安装了客户端证书

php - INET6_ATON 的替代 MySQL 代码

javascript - json文件显示格式错误

javascript - JSON epoch to date 函数返回错误的日期

java - 使用自定义类类型将 json 文件转换为 Java 映射

java - 从 JSON 对象填充 JTable

php - MySQL和PHP解析错误

php - cakephp 3 表单的文件类型不将图像数据保存在数据库中