PHP使用花括号语法调用方法,可以使用字符串。

6
我在这个SO答案中看到,可以使用花括号中的字符串来调用PHP类方法。
$player->SayHi();

可以用以下方式进行替代写作:
$player->{'SayHi'}();

我的问题是:

这种在PHP中被称作什么语法?如果使用了不对应方法的错误字符串会发生什么?

此外,我可以使用这个语法调用非类方法吗?

我查看了链接文章中的答案,但似乎只涉及到PHP回调语法,没有覆盖花括号语法。

谢谢。


如果它不对应于一个方法,你会得到一个错误,就像你使用正常语法一样。 - Barmar
在PHP中,当您调用一个对象时,只需使用大括号调用对象的方法即可访问。 - Gul Muhammad Akbari
2个回答

10

这是变量函数的一部分。当使用变量变量或变量函数时,您可以用大括号包裹任何返回字符串的表达式来替换变量。所以您可以这样做:

$var = 'SayHi';
$player->$var();

或者你可以使用以下一步完成:

$player->{'SayHi'}();

花括号语法在变量变量的文档中有演示。那里的例子是针对一个变量类属性,但同样的语法也用于类方法。


谢谢。您能解释一下花括号的用法吗?(当使用字符串字面值时) - thor
1
就像我之前说的,当值是一个表达式而不是一个变量时,你要使用花括号。所以如果你想要连接变量,可以写成 ->{$a.$b} - Barmar
我明白了。谢谢你的解释。在这种情况下,有没有关于使用花括号来括起表达式的PHP参考资料?对于这个新手问题,我很抱歉。我以前从未见过这种用法。 - thor

1

您可以在PHP手册中了解此内容。

基本上:

function getVarName() 
{ return 'aMemberVar'; } 

print $foo->{getVarName()}; // prints "aMemberVar Member Variable"

这是变量函数的一部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接