akawalko/respect-validation-rules
最新稳定版本:v1.0.1
Composer 安装命令:
composer require akawalko/respect-validation-rules
包简介
Custom rules for the most awesome validation engine ever created for PHP.
README 文档
README
What is this
This repository will be a set of additional rules for the brilliant data validation library called Respect\Validation
Install
Require php: >= 8.0
composer require akawalko/respect-validation-rules
Usage
After installing the package in the place where you want to use my rules, you must use the autoloder and import classes from the namespace.
require_once 'vendor/autoload.php'; use Respect\Validation\Exceptions\NestedValidationException; use Respect\Validation\Rules\AllOf; use Respect\Validation\Validator as v; use Respect\Validation\Factory;
To use my rules you need to overwrite the default factory so that it knows in which namespace to look for new rules.
Factory::setDefaultInstance( (new Factory()) ->withRuleNamespace('RespectValidationRules\\Rules') ->withExceptionNamespace('RespectValidationRules\\Exceptions') );
Rules
DynamicAttr
When you have an object that uses dynamic properties with the help of magic methods like __get() and __set() you can't use a rule Attribute. It will not work. The solution is my custom method DynamicAttr.
Let's look at this short example:
$dynamicObject = new ClassWithMagicMethods(); $dynamicObject->firstname = 'John Wesley'; $dynamicObject->lastname = 'Connor'; $dynamicObject->age = 36; $validator = new AllOf( v::dynamicAttr( 'firstname', v::stringType() ->alpha() ->length(2, 10) ), v::dynamicAttr( 'lastname', v::stringType() ->length(null, 190) false // property can be undefined ), v::dynamicAttr( 'age', v::intVal() ->min(18) ) ); try { $validator->assert($dynamicObject); echo "valid\n"; } catch (NestedValidationException $exception) { echo "not valid\n"; print_r($exception->getMessages()); }
The full code of the example can be found here: examples/example_01.php
统计信息
- 总下载量: 7
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-11-20