这个php语法有效吗? $类 - > { '东西'}()

时间:2015-11-07 18:20:59

标签: php

我正在阅读一些代码示例,并注意到一种我不熟悉的语法。

$response = $controller->{'home'}();

这是一种有效的php语法吗?

2 个答案:

答案 0 :(得分:4)

$controller->{'home'}
// same as 
$controller->home 
// used to access a property

并且

$controller->{'home'}()
// same as 
$controller->home()
// used to call a method

主要的好处是,通过调用->{stuff},您可以访问具有不同(或奇怪)名称的属性。

示例:

$a = new stdClass();
$a->{'@4'} = 4;

print_r($a);
// stdClass Object
// (
//    [@4] => 4
// )

您不能$a->@4,但可以$a->{'@4'}

请参阅此示例,例如:https://3v4l.org/PaOF1

答案 1 :(得分:2)

是的。关于它的一个很酷的事情是你可以根据存储在变量中的值来调用对象的方法:

$whatToExecute = 'home';

$response = $controller->{$whatToExecute}();
祝你好运!!