PHP裡有echoprintdierequire等幾個特殊的關鍵字雖然它們用起來像是函數但實際上更類似於ifwhile這樣控制語句而不是一個函數也就是說當解釋器遇到
復制代碼 代碼如下:
print
Hello world
;
這樣的一個表達式的時候並不會把它轉換成函數調用而是直接映射到一系列預先定義好的操作使用語言構成的時候可以加括號也可以不加括號但是使用函數的時候必須加括號
你提到的“可變函數”英文是”variable function”變量函數的意思翻譯成“可變函數”也有點扭曲原義把variable(變量)這個名詞按形容詞(可變)的含義來翻譯了PHP裡 的Variable function是指如果在一個變量後面加上一對括號那麼解釋器會試圖尋找名字和這個變量的值一樣的一個函數如果找到了就執行它例如有一個函數 foo()那麼可以用下面這種方式調用這個函數
復制代碼 代碼如下:
// 初始化一個字符串變量
$func =
foo
;
// 找到名字和這個字符串一樣的函數
並且執行它
$func();
所以你提到的這句話的含義就是使用變量函數這種方式來調用一個語言構成是不允許的例如下面這樣
復制代碼 代碼如下:
$func =
print
;
// 這樣做會產生異常
因為print不是一個函數
而是語言的構成部分
$func(
hello world
);
執行這段代碼會產生一個異常函數print沒有定義
From:http://tw.wingwit.com/Article/program/PHP/201311/20897.html