ayeo/validator2

简单的验证工具

dev-master 2023-03-24 08:54 UTC

This package is auto-updated.

Last update: 2024-09-23 08:52:47 UTC


README

Build Status Coverage Software License

Logo

注意:该项目尚未达到稳定版本 - 仅在你清楚自己在做什么时使用

极其简单却功能强大的验证工具。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();

错误结构与输入资源对象相同。(待补充:描述集合检查)