我有个主意。我想通过编写一些简单的代码,让我们的客户能够根据许多变量指定定价:
if customer.zip is "37208"
return 39.99
else
return 59.99
在我的代码中,我会做这样的事情:
try {
$variables = array('customer' => array('zip' => '63901'));
$code = DSL::parse(DSL::tokenize($userCode))
$returnValue = DSL::run($code, $variables);
} catch (SyntaxErrorException $e) {
...
}
我想我想要的是在 PHP 中创建一个简单的 DSL,它允许我们的客户在设置定价方面有很大的灵活性,而不必让我们对每个案例都进行编码。
这是基本思想:
- 我会提供一组变量和客户编写的代码。
- 解析器将评估用户使用提供的变量编写的代码,并将客户返回的值返回给我。它会为任何语法错误等引发异常。
- 然后我会在应用程序的正常逻辑中使用返回的值。
那么你知道在 PHP 中构建简单 DSL 的任何资源或框架吗?任何想法从哪里开始?
谢谢!