PHP里有echoprintdierequire等几个特殊的关键字虽然它们用起来像是函数但实际上更类似于ifwhile这样控制语句而不是一个函数也就是说当解释器遇到
复制代码 代码如下:
print
Hello world
;
这样的一个表达式的时候并不会把它转换成函数调用而是直接映射到一系列预先定义好的操作使用语言构成的时候可以加括号也可以不加括号但是使用函数的时候必须加括号
你提到的“可变函数”英文是”variable function”变量函数的意思翻译成“可变函数”也有点扭曲原义把variable(变量)这个名词按形容词(可变)的含义来翻译了PHP里 的Variable function是指如果在一个变量后面加上一对括号那么解释器会试图寻找名字和这个变量的值一样的一个函数如果找到了就执行它例如有一个函数 foo()那么可以用下面这种方式调用这个函数
复制代码 代码如下:
// 初始化一个字符串变量
$func =
foo
;
// 找到名字和这个字符串一样的函数
并且执行它
$func();
所以你提到的这句话的含义就是使用变量函数这种方式来调用一个语言构成是不允许的例如下面这样
复制代码 代码如下:
$func =
print
;
// 这样做会产生异常
因为print不是一个函数
而是语言的构成部分
$func(
hello world
);
执行这段代码会产生一个异常函数print没有定义