PHP Eval替代方案以生成动态if条件

时间:2019-04-06 18:33:34

标签: php eval

我有以下php代码,正在尝试使用eval生成动态if条件:

$categoryId = $_REQUEST['category_id'];
$locationId = $_REQUEST['location_id'];

$recordId = 1;

$criteria = [(!empty($categoryId) ? '(isInCategory($recordId, $categoryId))' : ''),
             (!empty($locationId) ? '(isInLocation($recordId, $locationId))' : '')];

$check = implode(' && ', array_filter($criteria));

// $check will be  
// (isInCategory($recordId, $categoryId)) && (isInLocation($recordId, $locationId))
// if $categoryId and $locationId are not empty

if(eval("return $check;")) 
{ 
    echo 'true'; 
}
else
{
   echo 'false';
}

问题是整个代码本身都在一个eval语句中,所以基本上我最终在一个eval内以一个eval结尾,这引发了错误-无法真正解决错误,因为我得到的只是一个友好的错误页面所以我假设是这种情况,即您不能在另一个eval中使用eval ???

我被迫使用专有产品,所以这是我的限制。是否可以通过其他方法重构上述if语句中的eval。

我阅读了一些有关使用call_user_func()的内容,但是我对此并不陌生。任何帮助将不胜感激。

0 个答案:

没有答案