语言构造的含义是什么,不能通过变量函数调用?

时间:2013-01-24 08:39:26

标签: php

  

可能重复:
  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" 这是什么意思?

3 个答案:

答案 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