xavren / expression-language
Symfony ExpressionLanguage 组件分支
dev-master
2015-10-15 15:58 UTC
Requires
- php: >=5.3.9
Requires (Dev)
- phpunit/phpunit: 4.1.*
This package is auto-updated.
Last update: 2024-09-10 21:44:18 UTC
README
ExpressionLanguage 组件提供了一个可以编译和评估表达式的引擎
use Hydra\Component\ExpressionLanguage\ExpressionLanguage;
$language = new ExpressionLanguage();
echo $language->evaluate('1 + foo', array('foo' => 2));
// would output 3
echo $language->compile('1 + foo', array('foo'));
// would output (1 + $foo)
默认情况下,该引擎实现了简单的数学和逻辑函数、方法调用、属性访问和数组访问。
您可以使用函数扩展您的 DSL
$compiler = function ($arg) {
return sprintf('strtoupper(%s)', $arg);
};
$evaluator = function (array $variables, $value) {
return strtoupper($value);
};
$language->register('upper', $compiler, $evaluator);
echo $language->evaluate('"foo" ~ upper(foo)', array('foo' => 'bar'));
// would output fooBAR
echo $language->compile('"foo" ~ upper(foo)');
// would output ("foo" . strtoupper($foo))
资源
您可以使用以下命令运行单元测试
$ composer.phar install --dev
$ phpunit