为什么我不能以这种方式调用eval()?

时间:2012-10-28 07:39:09

标签: php

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

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

php告诉我eval未定义。

4 个答案:

答案 0 :(得分:2)

在PHP中,eval是一种“语言结构”,而不是一种功能。 (注意它在语法高亮编辑器中转换为关键字颜色。)无法使用变量函数语法$func()调用语言结构,或者与is_callable()等其他特定于函数的函数一起使用。

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

  

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

无法使用变量函数调用

eval()。如果你不明白variable function是什么?查看代码的以下部分

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

如果您查看手册参考,请清楚noted

  

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

答案 3 :(得分:-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>';
?>