PHP语法 - 卷曲大括号

时间:2017-01-26 15:10:36

标签: php syntax

所以我有一个简单的课程;

class Foo{
      public function bar(){
      // Do something
      }
}
$method = 'bar';
$object = new Foo;

使用

$object->{ $method }()

似乎与编写

相同
$object->$method()

这些之间是否存在差异,如果没有,为什么要以某种方式写出来?

1 个答案:

答案 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()}(); 这样的代码。但是,如果在某些情况下不清楚如何执行表达式 - 更好地使用{}