0

为什么以下代码无法编译:

<?php
  $str = "echo \"ok\"";
  $func = "eval";
  $func ($str);
?>

php 告诉我 eval 是未定义的。

4

4 回答 4

2

在 PHP 中,eval是“语言构造”,而不是函数。(注意它在语法高亮编辑器中变成关键字颜色。)不能使用变量函数语法调用语言结构,也不能$func()与其他特定于函数的东西一起使用,例如is_callable().

http://www.php.net/manual/en/functions.variable-functions.php

变量函数不适用于诸如 echo、print、unset()、isset()、empty()、include、require 等语言结构。利用包装函数将这些结构中的任何一个用作变量函数。

于 2012-10-28T07:46:27.103 回答
1

eval不是一个函数,它是一个语言结构,变量函数不适用于语言结构。

于 2012-10-28T07:43:54.420 回答
1

eval()不能使用变量函数调用。如果你不明白什么是变量函数?查看代码的以下部分

  $func = "eval";
  $func ($str); //Here $func becomes eval upon execution making it a variable function

如果您查看手册参考,则清楚地指出

注意:因为这是一种语言结构而不是函数,所以不能使用变量函数来调用它。

于 2012-10-28T07:51:24.370 回答
-1

你错了..代码,也许像例子..

<?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>';
?>
于 2012-10-28T07:50:54.730 回答