重複の可能性:
言語構造とPHPの「組み込み」関数の違いは何ですか?
"Language construct such as
PHPプログラミングの本でecho()and
isset()を読んだことがありますcan not be called through variable function"
が、その意味は何ですか?
重複の可能性:
言語構造とPHPの「組み込み」関数の違いは何ですか?
"Language construct such as
PHPプログラミングの本で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
たとえば)