mwayi / expression
一个多功能的PHP条件解析器。
0.1.0
2016-11-08 19:19 UTC
Requires
- php: >=5.3
Requires (Dev)
- phpunit/phpunit: ~5.0
This package is not auto-updated.
Last update: 2024-09-29 01:53:22 UTC
README
一个多功能的表达式解析器。
表达式解析器允许开发者传入一个纯文本语句,该语句可以被解析为以下之一:
- 一个可迭代条件对象
- 一个布尔(true或false)语句
- 一个MySql PDO对象
以下是一个示例用例
$expression = new \Smrtr\Expression('a = b');
$conditions = $expression->execute()->toArray();
print_r($conditions);
将会解析为
Array
(
[0] => Smrtr\Expression\Condition Object
(
[attributes:protected] => Array
(
[key] => a
[value] => b
[original_value] => b
[operator] => =
)
)
)
现在你可以使用回调递归迭代该对象
$result = $expression->solve(function($condition) {
return $this->myCustomAssertionEngine(
$condition->key,
$condition->operator,
$condition->value
);
});
其中 $this->myCustomAssertionEngine
会被构建来识别键和操作符。处理器将包含基于提供的值返回falsey和truthy结果的逻辑。
protected function myCustomAssertionEngine($key, $operator, $value)
{
$handler = 'handle' . ucfirst($key) . 'Key';
if(method_exists($handler, $this)) {
return $this->{$handler}($operator, $value);
}
return false;
}
结果将是一个布尔值。
var_dump($result); // bool(true) or bool(false)
定义
条件元素
条件由一个键和一个值组成,它们通过操作符(例如=
)连接,返回true或false。
[key] [operator] [value]
a = b
复合条件
复合条件结合了两个或更多通过逻辑操作符(例如,AND)连接的条件,返回true或false。
a = b AND c = d
嵌套条件
嵌套条件使用括号来分组包含在其他条件中的条件,并使用AND和OR连接。
a = b AND (c = d OR e = f)
逻辑运算符
逻辑运算符将两个条件组合在一起以返回一组结果
AND
OR
待办事项
- 允许条件元素
value
和key
被扩展。 - 将创建表达式对象的责任传递给表达式接口。
测试
php vendor/bin/phpunit