我正在建立一个用户可以输入自己的表达式的系统。 我searched所有of internet我似乎无法找到一个示例,说明如何在执行前验证用户输入的表达式。
是否有"标准方式"或者"最佳实践" 验证用户输入的表达式还是我必须自己进行验证?
我只是想让用户过滤一个表(数组),所以我猜的表达式不会过于复杂。
因此对于包含array('id', 'firstName', 'lastName', 'docId', 'profit');
标题的数组,我希望表达式为:row.id < 2 and row.profit <= 500
答案 0 :(得分:3)
Symfony/ExpressionLanguage
包有一个SyntaxError
类,如果表达式中存在错误,则抛出此异常。
控制错误:
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
use Symfony\Component\ExpressionLanguage\SyntaxError;
$expressionLanguage = new ExpressionLanguage();
try {
$expressionLanguage->evaluate('1 + b.foo');
} catch (SyntaxError $e) {
// Error
}
但是,我们无法按类型控制错误:
作为解决方案(坏主意),您可以通过异常文本控制类型。