2017-01-26 69 views
0

所以我有一個簡單的類;PHP語法 - 大括號

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

使用

$object->{ $method }() 

似乎工作一樣寫

$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()}();必須是應避免。但是,如果在某些情況下還不清楚如何執行表達式 - 最好使用{}