keboola / filter
简单的比较过滤器
2.0.0
2021-01-20 10:43 UTC
Requires
- php: >=7.4
- keboola/php-utils: ^4.1
Requires (Dev)
- keboola/coding-standard: >=9.0
- php-parallel-lint/php-parallel-lint: ^1.2
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-08-29 04:09:04 UTC
README
描述
将对象中的值与过滤器中预置的值进行比较。过滤器由包含键(对象中的字段名)、运算符和要比较的值的字符串构建而成。然后,将一个对象传递给过滤器,并评估该对象是否通过过滤器。
用法
use Keboola\Filter\Filter; // Compare the `shoeSize` property of John $john = new \stdClass(); $john->shoeSize = 45; $filter = FilterFactory::create("shoeSize>42"); $filter->compareObject($john); // true // Multiple conditions can be used $filter = FilterFactory::create("field1==0&field2!=0"); $object = (object) [ 'field1' => 0, 'field2' => 1 ]; $result = $filter->compareObject($object); // true
- 过滤器对空白字符敏感,因此
value == 100将在value␣中查找␣100的值,而不是像预期的那样在value和100中查找。 - 正确 的用法:
value==100 - 错误 的用法:
value == 100
支持的比较运算符
<-- 小于>-- 大于==-- 等于<=-- 小于或等于>=-- 大于或等于!=-- 不等于~~-- 类似!~-- 不类似
类似运算符
类似(和不类似)运算符允许您使用部分匹配。在目标值中使用百分号 % 字符来匹配任意数量的字符,例如。
use Keboola\Filter\Filter; // Compare the `shoeSize` property of John $john = new \stdClass(); $john->name = "Johnny"; $filter = FilterFactory::create("name~~Johnny"); $filter->compareObject($john); // true
支持的逻辑运算符
使用逻辑运算符,您可以组合多个条件。您可以组合具有不同值和不同键的条件。支持的逻辑运算符
&-- 逻辑与|-- 逻辑或
用法
- 情况 1:对象的状态必须是
enabled,并且年龄必须大于18
status==enabled&age>18
{
'status': 'enabled',
'age': 20
}
在此对象上 compareObject 将返回 true。
{
'status': 'enabled',
'age': 15
}
在此对象上 compareObject 将返回 false。
- 情况 2:对象的状态必须是
new或udated
status==new|status==updated
{
'status': 'new'
}
在此对象上 compareObject 将返回 true。
{
'status': 'updated'
}
在此对象上 compareObject 将返回 true。
{
'status': 'closed'
}
在此对象上 compareObject 将返回 false。
组合逻辑运算符
不支持括号,但应用了标准运算符优先级(& 在 | 之前)。例如,表达式 a==b&c==d|e==f 被解释为 (a==b&c==d)|e==f,而表达式a==b&c==d|e==f&g==h 转换为 (a==b&c==d)|(e==f&g==h)。