【问题标题】:PHP Syntax - Curly bracesPHP 语法 - 花括号
【发布时间】:2017-01-26 15:10:36
【问题描述】:

所以我有一个简单的类;

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

使用

$object->{ $method }()

似乎和写作一样工作

$object->$method()

这些之间有什么区别吗?如果没有,你为什么要这样写?

【问题讨论】:

    标签: php syntax


    【解决方案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()}();这样的代码必须避免。但是,如果在某些情况下还不清楚如何执行表达式 - 最好使用 {}

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 2018-05-02
      • 2012-02-21
      • 1970-01-01
      相关资源
      最近更新 更多