验证资源和规则。

安装: 75

依赖: 0

建议: 0

安全: 0

星标: 1

分支: 0

类型:项目

0.4.0 2022-09-20 08:56 UTC

This package is auto-updated.

Last update: 2024-08-28 19:45:53 UTC


README

用于验证各种值的包。

请注意,这是一个预发布版本,在第一个正式发布之前,可能对基础API进行更改,这可能会破坏任何实现。
如果在1.0.0版本之前使用验证包,请确保设置次要版本的约束,例如

"jitesoft/validator": "0.1.*"

用法

安装包

$> composer require jitesoft/validator

创建验证器时,需要在构造函数中设置可用的规则。这样,验证器就知道它可以使用哪些规则,并在需要时创建它们。

$validator = new Validator(
  Email::class,
  Text::class
);

有多种方式可以验证数据,以下片段都是有效的

使用单个规则的单个验证

$validator->validate('text', 'abc123');

使用深层规则的单个验证

$validator->validate(['text' => ['pattern' => '/?.*/' ], 'abc123');

索引数组中的多个规则和值

$validator->validate([
    'text',
    'number'
], [
    'abc',
    123
]);

具有索引数组值的多个深层规则

$validator->validate([
    'text' => [
        'pattern' => '/?.*/'
    ],
    'number' => [
        'max' => 200
    ]
], [
    'abc',
    123
]);

使用命名值的命名测试

$validator->validate([
    'first' => [ 
        'text' => [ 
            'pattern' => '/?.*/' 
        ]
    ],
    'second' => 'number'
], [
  'second' => 123,
  'first' => 'abc123'
]);

索引数组上的命名测试。

$validator->validate([
    'first' => [ 
        'text' => [ 
            'pattern' => '/?.*/' 
        ]
    ],
    'second' => 'number'
], [ 'abc', 123 ]);

返回值是一个布尔值,如果数据有效则为true,如果无效则为false。
如果为false,则 $validator->getErrors() 方法将返回验证测试的错误。

默认情况下,验证器不会抛出任何异常。但如果需要这样做,请将验证器构造函数的 $throw 参数设置为true,它将抛出 ValidationException 而不是返回false。

理念

验证结构的理念是,每个验证规则都可以有一组子规则。子规则反过来又可以有其他子规则。
在实现规则时,重要的是要确保验证器不会创建无限的自引用循环。

graph TD;

TextRule-- optional -->LengthRule
LengthRule-- optional -->MoreThanRule;
LengthRule-- optional -->LessThanRule;
TextRule-- optional -->PatternRule;
$validator->validate([
  'Test' => [
    'text' => [
      'length' => [
        'max' => 5,
        'min' => 2
      ],
      'pattern' => '/abc(\d{3})/s'
    ]
], 'abc123');

当验证器出错时,它应该从给定的规则中获取错误,并根据 throw 参数,要么将其存储在错误中,要么抛出验证异常。

当前实现的规则

以下是一个实现规则及其子规则关系的图。规则名称是实际名称,而不是类名称。请检查 src/Rules 目录以获取类名称。

graph TD;

boolean

text-->email
text-->length
text-->pattern

email-->length
email-->pattern

length-->max
length-->min

number-->min
number-->max

float-->min
float-->max

int-->min
int-->max

更改

0.1.0

验证调用

更新了验证函数调用。现在它将规则作为第一个参数,将值作为第二个参数。
规则可以是单个字符串,用于测试单个值,也可以是字符串数组,用于测试值数组,或者是一个关联数组,其中包含测试名称,它定义了规则并测试了一个值列表或匹配的关联数组。

错误

错误现在是关联数组,其中包含 'test name' 作为键,然后是每个规则及其错误作为键值对。
规则和错误都被扁平化了,所以深度总是相同的

$errors = [
  'TestName1' => [
    'text' => 'some error'
  ],
  'TestName2' => [
    'min' => 'Some error',
    'max' => 'Some error',
    'pattern' => 'Some other error.'
  ]
]

需要输入扁平化的数组。它应该扁平化还是为每个规则名称添加新的深度?

许可证

MIT。