可能重复:
语言结构和 PHP 中的“内置”函数有什么区别?
我在php编程书上看过"Language construct such as
echo() and
isset()can not be called through variable function"
是什么意思?
可能重复:
语言结构和 PHP 中的“内置”函数有什么区别?
我在php编程书上看过"Language construct such as
echo() and
isset()can not be called through variable function"
是什么意思?
echo()
和isset()
(只是为其他 PHP 语言结构挑选那些示例)不能在变量函数中调用。
这是一个变量函数的例子。
function foo() {
echo "foo";
}
$func1 = 'foo';
$func1(); // "foo" will be output
现在让我们尝试一下echo
:
$func2 = 'echo';
$func2(); // "Fatal error: Call to undefined function echo() on line 10"
那是因为echo()
不是函数,而是语言构造。
php中的任何函数,无论是内置函数还是用户函数,都会存储在php内部的一个HashTable中。
当你调用一个函数时,它通过函数名在 HashTable 上找到函数。
但是 echo()、isset() 不是函数,所以在函数 HashTable 中是不存在的。所以“语言构造这样的asecho()andisset()不能通过变量函数调用”
这意味着你不能这样做:
$f = 'echo';
$f('hello world');
因为echo
不是函数(sprintf
例如)而是语言符号(if
例如)