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


PHP curly brace syntax for calling methods using string

我在这个SO答案中看到,可以使用大括号内的字符串来调用PHP类方法,这样

$player->SayHi();

可以替换为:

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

我的问题是:

这个语法在PHP中叫什么?如果使用了与方法不对应的错误字符串,会发生什么?

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

我查看了链接文章中的答案,其中只有指向PHP回调语法的链接,似乎没有涵盖大括号语法。

谢谢,

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

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

或者你可以用一步完成

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

带大括号的语法显示在变量的文档中。该示例用于变量类属性,但类方法使用相同的语法。

您可以在PHP手册中了解到这一点

基本:

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

它是可变函数的一部分。