所以我有一个简单的课程;
class Foo{
public function bar(){
// Do something
}
}
$method = 'bar';
$object = new Foo;
使用
$object->{ $method }()
似乎与编写
相同$object->$method()
这些之间是否存在差异,如果没有,为什么要以某种方式写出来?
答案 0 :(得分:1)
这些样式之间的差异变得很大,而不是您使用的简单$method
,例如:
class Baz {
public function getMethodName()
{
return 'bar';
}
}
class Foo{
public function bar(){
echo 'bar_run';
}
}
$method = 'bar';
$object = new Foo;
$yao = new Baz();
// see this line:
$object->{$yao->getMethodName()}(); // outputs `bar_run`
// if you omit `{}`:
$object->$yao->getMethodName()(); // fatal error
因此,如果不清楚如何解析代码,则应使用{}
。
当然,必须避免像$object->{$yao->getMethodName()}();
这样的代码。但是,如果在某些情况下不清楚如何执行表达式 - 更好地使用{}
。