关于PHP 5中的eval的问题

You*_*ung 2 php eval

我已经做了近一年的PHP东西,eval()虽然我知道它的用法,但我从未使用过该函数.但是我在SO中发现了很多关于它的问题.所以有人能告诉我一个简单的例子,它有必要使用eval()吗?这是一个好的或坏的做法?

use*_*291 10

eval()是实现像Smarty这样的"编译"模板引擎所必需的,它使用自己的语言并在运行时将其编译成php.这种引擎的主要功能通常是类似的

 function render_template($path) {
    $code = file_get_contents($path);
    $php = $this->compile_to_php($code);
    eval($php);
 }
Run Code Online (Sandbox Code Playgroud)

除此之外,每次使用"include"或"require"时,你实际上都在使用"eval" - 所以,实际上,eval是最常用的php结构之一.

  • 好吧,我认为99%的人谈论"不良做法"无法解释原因.他们只是重复他们从其他人那里听到的废话. (6认同)

Pek*_*ica 6

使用eval()是一种不好的做法,如果事实证明是必要的,那通常是潜在设计错误的标志.

我想不出有必要使用的任何情况eval().(即东西不能用其它语言结构,或通过固定一个破碎的设计来实现的.)有兴趣看到任何真正的情况是否来这里那里的eval实际上必要的或替代将是可怕的复杂.

可能需要的唯一实例是执行来自外部源的代码(例如数据库记录).但这本身就是IMO的设计错误.