如何在PHP中保存变量中的表达式?

时间:2013-02-02 09:28:04

标签: php

这可能是个坏问题,但我想知道是否可能。

//here is my expression
$data = ($edit == 'allow') ? getData($id) : null;

上面的表达式解释并保存在$data变量中,是否可以将其保存为字符串并在需要时执行?

3 个答案:

答案 0 :(得分:5)

您可以创建一个绑定$edit$id变量的闭包,以便稍后使用:

$data = function() use ($id, $edit) {
    return ($edit == 'allow') ? getData($id) : null;
}

// later in your code
if ($data()) {
} else {
}

答案 1 :(得分:1)

绝对有可能:

$string = '$data = ($edit == \'allow\') ? getData($id) : null;';

要运行表达式,只需评估它。

eval($string);

现在您可以根据需要使用$data变量。

答案 2 :(得分:0)

为此目的使用eval构造:

$expression = "(\$edit == \'allow\') ? getData(\$id) : null;";
eval($expression);

但这很危险,因为它可以执行潜在的恶意代码。小心使用。