2017-01-26 9 views
0

私は単純なクラスを持っています。PHP構文 - 中括弧

$object->{ $method }() 

を使用して

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

$object->$method() 

を書くことと同じように動作するようですこれらとされていない場合、なぜあなたはそれを一つの方法または他のを書きますとの間の違いはありますか?代わりに、単純な$methodの使用時にこれらのスタイルの間

答えて

1

差が顕著になり、例えば、この:それはあなたのコードを解析する方法は明らかではないとき

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()}();のようなコードは、避けてください。しかし、式をどのように実行するかが明確に理解されていないケースがある場合は、{}を使用してください。