可能重复:
What is the difference between a language construct and a “built-in” function in PHP?
我已经在php编程书中看到"Language construct such as
echo()and
isset()can not be called through variable function"
这是什么意思?
答案 0 :(得分:5)
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()
不是一个函数,而是一个语言结构。
答案 1 :(得分:3)
php中的任何函数,无论是内置函数还是用户函数,它都将存储在php内部的HashTable中。
当你调用一个函数时,它会按函数名在HashTable上找到函数。
但是echo(),isset()不是函数,所以它在函数HashTable中不存在。所以“语言构造这样的asecho()和isset()不能通过变量函数”
调用答案 2 :(得分:1)
这意味着你不能这样做:
$f = 'echo';
$f('hello world');
因为echo
不是函数(例如sprintf
),而是语言符号(例如if
)