3

可能重复:
语言结构和 PHP 中的“内置”函数有什么区别?

我在php编程书上看过"Language construct such asecho() andisset()can not be called through variable function" 是什么意思?

4

3 回答 3

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()不是函数,而是语言构造。

于 2013-01-24T08:46:17.550 回答
3

php中的任何函数,无论是内置函数还是用户函数,都会存储在php内部的一个HashTable中。

当你调用一个函数时,它通过函数名在 HashTable 上找到函数。

但是 echo()、isset() 不是函数,所以在函数 HashTable 中是不存在的。所以“语言构造这样的asecho()andisset()不能通过变量函数调用”

于 2013-01-24T08:48:09.487 回答
1

这意味着你不能这样做:

$f = 'echo';
$f('hello world');

因为echo不是函数(sprintf例如)而是语言符号(if例如)

于 2013-01-24T08:46:53.910 回答