用于使用字符串调用方法的PHP大括号语法

时间:2014-11-02 06:03:50

标签: php syntax

我在这个SO answer中看到,可以使用花括号内的字符串来调用PHP类方法,以便

$player->SayHi();

可以替代写成:

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

我的问题是:

PHP中调用的语法是什么?如果使用了与方法不对应的错误字符串会发生什么?

另外,我可以使用这种语法来调用非类方法吗?

我查看了链接帖子中的答案,并且只有PHP回调语法的链接,这似乎不包括大括号语法。

谢谢,

2 个答案:

答案 0 :(得分:6)

它是variable functions的一部分。使用变量或变量函数时,可以将变量替换为通过包装大括号返回字符串的任何表达式。所以你可以这样做:

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

或者您可以通过以下步骤一步完成:

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

带括号的语法显示在variable variables的文档中。示例中有一个变量类属性,但类方法使用相同的语法。

答案 1 :(得分:1)

您可以在PHP manual

中了解相关信息

基本上:

function getVarName() 
{ return 'aMemberVar'; } 

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

它是变量函数的一部分。