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