akawalko / respect-validation-rules
为PHP中最出色的验证引擎创建的自定义规则。
v1.0.1
2023-12-01 21:41 UTC
Requires
- php: ^8.0 || ^8.1 || ^8.2
- respect/validation: ^2.2
Requires (Dev)
- phpunit/phpunit: ^10.0
README
这是什么
该仓库将是一套为出色的数据验证库Respect\Validation提供的附加规则。
安装
要求 php: >= 8.0
composer require akawalko/respect-validation-rules
用法
在您想要使用我的规则的位置安装此软件包后,您必须使用自动加载器并从命名空间导入类。
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;
要使用我的规则,您需要覆盖默认的工厂,以便它知道在哪个命名空间中查找新规则。
Factory::setDefaultInstance( (new Factory()) ->withRuleNamespace('RespectValidationRules\\Rules') ->withExceptionNamespace('RespectValidationRules\\Exceptions') );
规则
DynamicAttr
当您有一个使用__get()和__set()等魔术方法动态属性的对象时,您不能使用规则Attribute。这不会工作。解决方案是我的自定义方法DynamicAttr。
让我们看看这个简短的示例
$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()); }
示例的完整代码可以在这里找到:examples/example_01.php