次のコードがコンパイルに失敗するのはなぜですか:
<?php
$str = "echo \"ok\"";
$func = "eval";
$func ($str);
?>
そしてphpは、evalが定義されていないことを教えてくれます。
次のコードがコンパイルに失敗するのはなぜですか:
<?php
$str = "echo \"ok\"";
$func = "eval";
$func ($str);
?>
そしてphpは、evalが定義されていないことを教えてくれます。
PHPでは、eval
は「言語構造」であり、関数ではありません。(注意構文強調表示エディターではkeyword-colorに変わります。)言語構造は、可変関数構文を$func()
使用して呼び出すことも、。などの他の関数固有のものと一緒に使用することもできませんis_callable()
。
http://www.php.net/manual/en/functions.variable-functions.phpから:
変数関数は、echo、print、unset()、isset()、empty()、include、requireなどの言語構造では機能しません。ラッパー関数を利用して、これらの構造のいずれかを変数関数として利用します。
eval
は関数ではなく、その言語構造であり、変数関数は言語構造では機能しません。
あなたは間違っている..コード、多分例のように..
<?php
$eval_code = '$my_name = "Swashata";' .
'$your_name = "John";' .
'return $your_name;' .
'echo $my_name;';
$the_name = eval( $eval_code );
echo '<p>$the_name has got a value ' . $the_name . '</p>';
?>