Альтернатива для 'eval () uating' условие

В устаревшей кодовой базе, над которой я работаю, есть оценщик условий, который принимает ввод пользователя для построения условия. Это условие затем оценивается во время выполнения с использованием php eval (). Каков наилучший способ решить эту проблему без использования eval.

Например, у меня есть условие «1> 0», введенное пользователем в пользовательском интерфейсе. Это нужно оценить, и результат (true в этом случае) вернется. Какие-либо предложения?

Дай знать, если проблема кажется расплывчатой, я постараюсь лучше объяснить.

Solutions Collecting From Web of "Альтернатива для 'eval () uating' условие"

Анализатор evalMath на PHPClasses обеспечивает безопасную структуру для оценки этого типа выражения.

Я бы сказал, что наиболее подходящим для этого шаблоном будет шаблон спецификации .

В компьютерном программировании шаблон спецификации представляет собой конкретный шаблон разработки программного обеспечения, при котором бизнес-логику можно объединить, объединив бизнес-логику, используя логическую логику.

Однако этот подход потребует от вас написать парсер для ввода, заданный вашими пользователями, чтобы безопасно преобразовать условия в экземпляры спецификации. В зависимости от сложности разрешенных условий это может быть непростой задачей.

Вы могли бы добиться этого, создав лямбда-функции с помощью create_function для утверждений, но это так же небезопасно, как использование eval когда речь идет о пользовательском вводе.