funcke / dry_php
本包的最新版本(dev-master)没有可用的许可证信息。
Dry::Schema 和 Dry::Validation for php
dev-master
2020-09-29 18:47 UTC
Requires (Dev)
- pestphp/pest: 0.3.6
- phpunit/phpunit: ^9.3.10
This package is auto-updated.
Last update: 2024-09-29 05:22:22 UTC
README
典型的PHP应用程序需要不断地处理大量的if条件语句,以确定实体是否满足开发者在创建软件时设定的约束。
Dry提供了一种简单的方法来消除冗余的验证语句,并将任何类型实体的约束集中在单个文件中。只需在类实例上调用validate方法,即可验证提供的参数。
无论是有数组还是对象,Dry::PHP都不关心
您可以对实体进行多次验证
- 在传递到端点时
- 在存储到数据库之前
- 在从文件或类似文件反序列化之后
使用Dry::PHP,您只需定义一个约束的单个文件并在数据上调用它。Dry::PHP支持以 [property => value] 形式的关联数组和标准PHP对象。在验证过程中,对象本身将被转换为数组,然后进行检查。
请注意:私有属性或从父类继承的属性也将包含在检查过程中!
示例
# ExampleSchema.php <?php use Dry\DryStruct; class ExampleSchema extends DryStruct { public function __construct() { parent::__construct(); self::required('name')->filled('string'); self::optional('age')->filled('integer')->min(6); self::required_object('book')->do(function($book) { $book->required('title')->filled('string'); }); $this->required_array('buyers')->each(function($buyer) { $buyer->type('object')->do(function($buyer) { $buyer->required('name')->filled('string'); }); }); } }
# index.php <?php # validate expected schema (new ExampleSchema())->validate(['name' => 'Richard', 'age' => 7, 'book' => (object) [ 'title' => 'Richard' ], "buyers" =>[ (object)[ "name" => "Richard" ], (object)[ "name" => "Lorenz" ] ] ]); # validate faulty schema => method call returns array with affected fields + violations $result = (new ExampleSchema())->validate(['name' => 'Richard', 'age' => 4, 'book' => (object) [ 'title' => 'Richard' ] ]); print_r($result); ## # output # Array( # [buyers] => Array( # missing # ) # )
支持的约束
- filled: 属性的数据类型,根据期望的数据类型,将执行进一步评估
- min: 数字属性的最低值
- max: 数字属性的最高值
- minLength: 字符串属性的最低长度
- maxLength: 字符串属性的最高长度
- minSize: 数组属性的最低大小
- maxSize: 数组属性的最高大小
- required_object: 将对象属性添加到目标模式。此对象需要有自己的验证配置!