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)
。