这可能是个坏问题,但我想知道是否可能。
//here is my expression
$data = ($edit == 'allow') ? getData($id) : null;
上面的表达式解释并保存在$data
变量中,是否可以将其保存为字符串并在需要时执行?
答案 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);
但这很危险,因为它可以执行潜在的恶意代码。小心使用。