替代“评估”一个条件

时间:2010-08-18 11:35:10

标签: php eval

在我正在处理的遗留代码库中,有一个条件评估器接受用户输入来构建条件。然后使用php eval()在运行时评估此条件。在不使用eval的情况下解决此问题的最佳方法是什么。

例如我在UI中输入了条件“1> 0”。这必须进行评估,并返回结果(在本例中为true)。有什么建议吗?

让我们知道问题是否模糊不清,我会尝试更好地解释。

2 个答案:

答案 0 :(得分:2)

PHPClasses上的evalMath parser结束提供了一个评估此类表达式的安全框架。

答案 1 :(得分:1)

我认为最合适的模式是Specification pattern

  

在计算机编程中,规范模式是一种特定的软件设计模式,通过使用布尔逻辑将业务逻辑链接在一起,可以重新构建业务逻辑。

但是,这种方法需要您为用户提供的输入编写解析器,以便将条件安全地转换为规范实例。根据所允许的条件的复杂性,这可能不是一件容易的事。

你可以通过为断言创建带create_function的lambda函数来实现同样的目的,但是当涉及用户输入时,这与使用eval一样不安全。