У меня есть следующий 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 (), но я новичок в этом. Любая помощь будет оценена.