ayeo / validator2
dev-master
2023-03-24 08:54 UTC
Requires
- php: >=7.2
Requires (Dev)
- phpunit/phpunit: ^7.4
This package is auto-updated.
Last update: 2024-09-23 08:52:47 UTC
README
注意:该项目尚未达到稳定版本 - 仅在你清楚自己在做什么时使用
极其简单却功能强大的验证工具。Alligator旨在满足任何类型的资源验证。它乐于遍历嵌套对象。Alligator还很好地与受保护/私有属性协同工作。
安装
composer requrie ayeo/alligator
规则
Alligator的使用场景主要涉及与整个资源对象的交互。规则也在对象级别定义。让我们来看一个简单的例子。
class Person { /** @var string */ private $firstname; /** @var string */ private $lastname; /** @var int */ private $age; /** @var string */ private $insuranceNumber; ... //getters/setters comes here }
默认情况下,规则定义为简单的数组(但这是非强制的 - 详细信息请见“自定义格式”)。
$recipe = [ 'firstname' => [ ['not_null', 'required'], ['min_length:5', 'too_short'], ['max_length:25', 'too_long'], ['letters', 'letters_only'] ], 'lastname' => [ ['not_null', 'required'], ['min_length:5', 'too_short'], ['max_length:25', 'too_long'], ['letters', 'letters_only'] ], 'age' => ['integer', 'must_be_integer'], //single rule 'insuranceNumber' => 'age>21' => ['regexp:^[0-4]{4}-[0-4]-{4}$', 'invalid_insurance_number'] ]
上述规则预期姓和名仅由字母组成,长度在5到25个字符之间。年龄是可选的,但如果是设置的值必须是整数。如果年龄超过21岁,则保险号码是必需的,这里定义为正则表达式。
使用
有了规则,我们现在可以查看Alligator能为我们做什么。
$food = new Person('Rocky', 'Balboa'); $food->setAge(37); $food->setInsuranceNumber('3423-543'); $alligator = new Alligator(); $result = $alligator->taste($food, $recipe); $errors = $alligator->getErrors();
错误结构与输入资源对象相同。(待补充:描述集合检查)