码度8 / 匹配器
超新鲜PHP匹配类(PHP 7.x OOP)
2.0.5
2017-05-14 12:51 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: 6.*
This package is not auto-updated.
Last update: 2024-09-20 20:56:54 UTC
README
PHP 对象/方法,帮助您验证复杂嵌套PHP数组的结构。类似于XML或JSON模式。
use C0DE8\MatchMaker\Manager; use C0DE8\MatchMaker\Exception\InvalidValueTypeException; use C0DE8\MatchMaker\Exception\KeyMatcherFailException; use C0DE8\MatchMaker\Exception\KeyMatchFailException; use C0DE8\MatchMaker\Exception\MatcherException; $books = [ [ 'type' => 'book', 'title' => 'Geography book', 'chapters' => [ 'eu' => ['title' => 'Europe', 'interesting' => true], 'as' => ['title' => 'America', 'interesting' => false] ], 'price' => 19.99 ], [ 'type' => 'book', 'title' => 'Foreign languages book', 'chapters' => [ 'de' => ['title' => 'Deutsch'] ], 'price' => 29.99 ] ]; $pattern = [ '*' => [ 'type' => 'book', 'title' => ':string contains(book)', 'chapters' => [ ':string length(2) {1,3}' => [ 'title' => ':string', 'interesting?' => ':bool', ] ], 'price' => ':float' ] ]; try { (new Manager)->matchAgainst($books, $pattern); // return true (otherwise throws an exception) } catch (\InvalidArgumentException $excetpion) { echo $exception->getMessage(); } catch (InvalidValueTypeException $excetpion) { echo $exception->getMessage(); } catch (KeyMatcherFailException $excetpion) { echo $exception->getMessage(); } catch (MatcherException $excetpion) { echo $exception->getMessage(); } catch (\Exception $excetpion) { echo $exception->getMessage(); }
它可以用来检查来自不同来源(JSON、XML、Post 数据)的标量值、对象或数组。
匹配规则
匹配规则是字符串,以“:”开头(冒号)。您可以使用空格连接多个匹配器。匹配器可以是任何可调用的(函数名或闭包)。您可以添加自己的规则或替换标准规则。
-
通用
- empty
- nonempty
- required
- in(a, b, ...)
- mixed
- any
-
类型
- array
- bool
- boolean
- callable
- double
- float
- int
- integer
- long
- numeric
- number
- object
- real
- resource
- scalar
- string
-
数字
- gt(n)
- gte(n)
- lt(n)
- lte(n)
- negative
- positive
- between(a, b)
-
字符串
- alnum
- alpha
- cntrl
- digit
- graph
- lower
- punct
- space
- upper
- xdigit
- regexp(pattern)
- url
- ip
- length(n)
- min(n)
- max(n)
- contains(needle)
- starts(s)
- ends(s)
- json
- date
-
数组
- count(n)
- keys(key1, key2, ...)
-
对象
- instance(class)
- class_exists(className)
- property(name, value)
- method(name, value)
更多详情请见 此处
键的量词
- ! - 必须有一个键(默认)
- ? - 可选键
- * - 任意数量的键
- {3} - 精确键数
- {1,5} - 范围
对于匹配器(即“:string”),默认量词是“*”
安装
- 使用Composer将匹配器安装到您的项目中
稳定版
composer require c0de8/matchmaker:*
开发版
composer require c0de8/matchmaker:dev-master
PHPUnit
此包期望(使用)PHPUnit 6.x.x 版本。 网站
(但PHPUnit 5.x.x 版本也可以使用)
许可证
版权(c)2017 Bjoern Ellebrecht
版权(c)2014 Petr Trofimov
MIT许可证
特此授予任何人免费获得本软件及其相关文档文件(“软件”)的副本的权利,以无限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向提供软件的人授予这样做,但受以下条件的约束
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定用途和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论这些责任是合同、侵权或其他方式产生的,与软件或其使用或其他交易有关。