未定义函数eval() - PHP

6
我正在尝试像这样使用eval()函数:
$foo = 'eval';
$bar = 'echo 1;';
$foo($bar);

但是我遇到了一个错误:致命错误:调用未定义的函数eval()

这很奇怪,因为下面的代码是有效的。
$foo = 'base64_encode';
$bar = 'foobar';
echo $foo($bar);

有人可以帮忙吗?

1
这是因为它很邪恶! - adeneo
1个回答

10

来自eval文档:

注意:因为这是语言结构而不是函数,所以无法使用可变函数调用。

在注意中的链接里你还会发现:

对于echo, print, unset(), isset(), empty(), include, require等语言结构,变量函数不能正常工作。需要使用包装函数才能将它们作为变量函数使用。


1
@ficuscr,eval 可以有非常实用和有用的用途。问题在于它被滥用了。 - Anonymous
勉强同意...虽然这种情况很少见。而且不是这样使用的——我相当确定变量函数不是为了可读性。看到更多有效的goto用例... - ficuscr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接