这可能是个坏问题,但我想知道是否有可能。
//here is my expression
$data = ($edit == 'allow') ? getData($id) : null;
上面的表达式解释并保存在$data
变量中,是否可以将其保存为字符串并在需要时执行?
这可能是个坏问题,但我想知道是否有可能。
//here is my expression
$data = ($edit == 'allow') ? getData($id) : null;
上面的表达式解释并保存在$data
变量中,是否可以将其保存为字符串并在需要时执行?
您可以创建一个闭包来绑定$edit
and$id
变量以供以后使用:
$data = function() use ($id, $edit) {
return ($edit == 'allow') ? getData($id) : null;
}
// later in your code
if ($data()) {
} else {
}
这绝对是可能的:
$string = '$data = ($edit == \'allow\') ? getData($id) : null;';
要运行表达式,只需评估它。
eval($string);
现在您可以$data
根据需要使用该变量。
您为此目的使用eval构造:
$expression = "(\$edit == \'allow\') ? getData(\$id) : null;";
eval($expression);
但这很危险,因为它可以执行潜在的恶意代码。小心使用它。