3

重複の可能性:
言語構造とPHPの「組み込み」関数の違いは何ですか?

"Language construct such asPHPプログラミングの本でecho()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 に答える