В нашем текущем приложении у меня есть отчет, который содержит что-то вроде:
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 разных клиентов, и у каждого клиента может быть / будет свой набор выражений.
Я просто не уверен в правильном / лучшем способе сделать это.
UPDATE
Мне кажется, я понимаю проблемы, связанные с использованием функции eval () в PHP. Но из-за количества возможных комбинаций я склоняюсь к использованию БД для хранения условий (пока не уверен насчет использования eval ())
Имеет ли значение (безопаснее), если нет интерфейса, обращенного к пользователю, который пишет в поле / таблицу условий? Это может быть что-то, чем мы можем управлять в одиночку.