0

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

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

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

4

3 回答 3

5

您可以创建一个闭包来绑定$editand$id变量以供以后使用:

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

// later in your code
if ($data()) {
} else {
}
于 2013-02-02T09:32:39.880 回答
1

这绝对是可能的:

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

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

eval($string);

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

于 2013-02-02T09:31:42.663 回答
0

您为此目的使用eval构造:

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

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

于 2013-02-02T09:32:12.357 回答