2014-11-02 72 views
4

我在這個SO answer看到,可以使用大括號內的字符串調用PHP類方法,以便調用使用字符串

$player->SayHi(); 

可以是替代書面方式PHP大括號的語法爲:

$player->{'SayHi'}(); 

我的問題是:

在PHP中調用的這種語法是什麼?如果使用了與方法不對應的錯誤字符串,會發生什麼情況?

另外,我可以使用這種語法來調用非類方法嗎?

我查看了鏈接帖子中的答案,並且只有指向PHP回調語法的鏈接,它似乎沒有涵蓋大括號語法。

感謝,

+0

如果它不對應於某個方法,則會出現錯誤,就像使用正常語法時一樣。 – Barmar 2014-11-02 06:06:34

+0

在PHP中,當你調用一個對象時,你可以訪問剛剛通過大括號調用的對象的方法。 – 2014-11-02 06:08:11

回答

5

它的variable functions一部分。當使用變量變量或變量函數時,可以用任何表達式來替換變量,該表達式通過包裝大括號來返回字符串。所以,你可以這樣做:

$var = 'SayHi'; 
$player->$var(); 

,或者你可以用它做一個步驟:

$player->{'SayHi'}(); 

variable variables文檔中顯示大括號的語法。這個例子有一個變量類屬性,但是類方法使用相同的語法。

+0

謝謝。你也可以解釋一下這個花括號嗎? (當使用字符串文字時)。 – tinlyx 2014-11-02 06:44:32

+0

就像我說過的,當值是表達式而不是變量時,使用花括號。所以如果你想連接變量,你可以做' - > {$ a。$ b}'。 – Barmar 2014-11-02 06:48:15

+0

我明白了。感謝您的解釋。在這種情況下,是否有任何使用大括號括起表達式的PHP引用?對不起,新手問題。我以前沒看過這個。 – tinlyx 2014-11-02 06:52:17

0

您可以在PHP manual

Basicly瞭解這一點:

function getVarName() 
{ return 'aMemberVar'; } 

print $foo->{getVarName()}; // prints "aMemberVar Member Variable" 

它的可變功能的一部分。