PHP Eval альтернатива для генерации динамического условия if - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть следующий php-код, где я пытаюсь сгенерировать динамическое условие if, используя eval:

$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 ???

Я вынужден использовать приличный продукт, так что это мое ограничение. Есть ли способ, которым я могу реорганизовать eval в приведенном выше операторе if с помощью другой техники.

Я прочитал кое-что об использовании call_user_func (), но я новичок в этом. Любая помощь будет оценена.

...