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

tin*_*lyx 4 php syntax

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

$player->SayHi();
Run Code Online (Sandbox Code Playgroud)

可以替代写成:

$player->{'SayHi'}();
Run Code Online (Sandbox Code Playgroud)

我的问题是:

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

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

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

谢谢,

Bar*_*mar 7

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

$var = 'SayHi';
$player->$var();
Run Code Online (Sandbox Code Playgroud)

或者您可以一步完成:

$player->{'SayHi'}();
Run Code Online (Sandbox Code Playgroud)

带有大括号的语法显示在变量变量的文档中.这个例子有一个变量类属性,但是类方法使用相同的语法.