为什么以下代码无法编译:
<?php
$str = "echo \"ok\"";
$func = "eval";
$func ($str);
?>
php告诉我eval未定义。
答案 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>';
?>