|
php里有echo、print、die、require等幾個特殊的關(guān)鍵字,雖然它們用起來像是函數(shù),但實際上更類似于if、while這樣控制語句,而不是一個函數(shù)。也就是說,當(dāng)解釋器遇到:
復(fù)制代碼 代碼如下:
print 'Hello world';
這樣的一個表達(dá)式的時候,并不會把它轉(zhuǎn)換成函數(shù)調(diào)用,而是直接映射到一系列預(yù)先定義好的操作。使用語言構(gòu)成的時候可以加括號,也可以不加括號,但是使用函數(shù)的時候必須加括號。
你提到的“可變函數(shù)”,英文是”variable function”,變量函數(shù)的意思,翻譯成“可變函數(shù)”也有點扭曲原義,把variable(變量)這個名詞按形容詞(可變)的含義來翻譯了。php里的Variable function是指如果在一個變量后面加上一對括號,那么解釋器會試圖尋找名字和這個變量的值一樣的一個函數(shù),如果找到了就執(zhí)行它。例如,有一個函數(shù)foo(),那么可以用下面這種方式調(diào)用這個函數(shù):
復(fù)制代碼 代碼如下:
// 初始化一個字符串變量
$func = 'foo';
// 找到名字和這個字符串一樣的函數(shù),并且執(zhí)行它
$func();
所以,你提到的這句話的含義就是,使用變量函數(shù)這種方式來調(diào)用一個語言構(gòu)成是不允許的,例如下面這樣:
復(fù)制代碼 代碼如下:
$func = 'print';
// 這樣做會產(chǎn)生異常,因為print不是一個函數(shù),而是語言的構(gòu)成部分
$func('hello world');
執(zhí)行這段代碼,會產(chǎn)生一個異常,函數(shù)print沒有定義。
php技術(shù):關(guān)于PHP語言構(gòu)造器介紹,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。