jaspr / expression
丰富的表达式构建器允许创建复杂的作用域表达式树,以过滤对象数组
1.1.3
2023-06-23 21:39 UTC
Requires
- php: ^8.1
Requires (Dev)
- ext-pdo: *
- ext-pdo_sqlite: *
- doctrine/collections: ^1.6
- doctrine/orm: ^2.7
- phpstan/phpstan: ^1.4.10
- phpunit/phpunit: ^9.4
- squizlabs/php_codesniffer: ^3.5
Suggests
- doctrine/collections: If you want use DoctrineCriteriaResolver
- doctrine/orm: If you want use DoctrineQueryResolver
README
这是一个创建表达式树以过滤对象集合的工具。主要任务是通过对象的属性过滤数组中的对象。此外,我将添加SQLResolver以创建查询的WHERE过滤器。
示例
<?php
$obj1 = new \stdClass();
$obj1->field = 1;
$obj2 = new \stdClass();
$obj2->field = 2;
$arr = [$obj1, $obj2];
$expression = Ex::and(
Ex::eq(Ex::field('field'), Ex::literal(1)),
Ex::gt(Ex::field('field'), Ex::literal(0))
);
$resolver = new ClosureResolver();
$filter = $resolver->dispatch($expression);
$result = array_filter($arr, $filter);
结果
array(1) { [0] => class stdClass#410 (1) { public $field => int(1) } }