tmilos / scim-filter-parser
跨域身份管理系统(SCIM)AST过滤器解析PHP库
1.3.0
2017-01-19 11:17 UTC
Requires
- tmilos/lexer: ^1.0
- tmilos/value: ^1.0
Requires (Dev)
- phpunit/phpunit: ^5.7
- satooshi/php-coveralls: ^1.0
This package is not auto-updated.
Last update: 2024-09-15 23:42:54 UTC
README
SCIM过滤器PHP解析器。SCIM代表跨域身份管理系统,更多详细信息可以在http://www.simplecloud.info/网站上找到。
用法
过滤模式
<?php $parser = new Parser(Mode::FILTER()); $node = $parser->parse('userType eq "Employee" and (emails co "example.com" or emails.value co "example.org")'); /* walk the node... Conjunction = { ComparisonExpression => userType eq Employee Disjunction => { ComparisonExpression => emails co example.com ComparisonExpression => emails.value co example.org } } */
路径模式
<?php $parser = new Parser(Mode::PATH()); $node = $parser->parse('members[value eq "2819c223-7f76-453a-919d-413861904646"].displayName'); /* walk the node... Path = { ValuePath = { AttributePath = 'members' ComparisonExpression = value eq 2819c223-7f76-453a-919d-413861904646 } AttributePath = displayName, } */
过滤和路径模式
SCIM v2为PATCH
操作定义了与检索资源过滤器表达式不同的可解析路径语法。解析器默认在FILTER模式下,但您可以使用可选构造函数参数或使用Parser::setMode(Mode $mode)
设置方法将其切换到PATH模式。
注意:路径模式仅适用于SCIM v2版本。
<?php $parser = new Parser(Mode::PATH()); $parser->parse('username'); // OK $parser->parse('username eq "xxx"'); // throws ParseException - Col 8: Expected end of input, but got ' '
SCIM过滤器版本
SCIM过滤器在v1和v2版本之间几乎没有变化,差异在于v2引入了新的ValuePath语法。解析器默认在v2模式下,您可以使用Parser::setVersion(Version::V1())
设置方法或使用可选构造函数参数将其切换到v1模式。在v1模式下,遇到括号时会抛出语法错误。
<?php $parser = new Parser(Mode::FILTER, Version::V1()); $parser->parse('emails[type eq "work"]'); // throws ParseException - Col 6: Expected SP, got '['