Как я могу сохранить условное выражение PHP в базе данных для последующего использования?

В нашем текущем приложении у меня есть отчет, содержащий что-то вроде:

if($foo == 3 || $bar > 3) {
    $e = someFunction();
};

, но для другого клиента это же выражение может быть:

if($foo == 3 || $bar == 5 && $foobar != 9) {
    $e = someFunction();
};

] Есть ли простой способ сохранить два разных выражения, только биты

$foo == 3 || $bar > 3 OR $foo == 3 || $bar == 5

в базе данных (MySQL), чтобы мне не приходилось жестко кодировать все эти правила клиентом или поддерживать клиентские версии одного и того же отчета. Я пытаюсь выяснить, могу ли я установить переменную для замены условий Примерно так:

$conditions = $row_rsConditions['condition_row']    //Get $foo == 3 || $bar > 3 from the DB and store it as $conditions
if($conditions) {
    $e = someFunction();
};

Может быть> 100 разных клиентов, и каждый клиент может / иметь другой набор выражений. Я просто не уверен в правильном / наилучшем способе сделать это.

ОБНОВЛЕНИЕ :

Я думаю, что понимаю проблемы, связанные с использованием функции PHP eval (). Но из-за количества возможных комбинаций я склоняюсь к использованию БД для хранения условий (пока не уверен в использовании eval ())

Имеет ли значение (безопаснее), если нет пользовательского интерфейса, который пишет в поле / таблицу условия? Это может быть то, чем мы справимся в одиночку.

8
задан hakre 18 December 2012 в 16:24
поделиться