fresh-advance/array-validator

该组件通过提供的规则列表验证表单数据或任何给定的数组。

v2.2.0 2021-02-06 20:47 UTC

This package is auto-updated.

Last update: 2024-09-07 04:58:32 UTC


README

Build Status Quality Gate Status Coverage Technical Debt Packagist

简单的表单数据/任何数组验证工具。

  • 组件通过提供的规则列表验证数组。
  • 在单个验证运行中,可以为单个字段的单个规则使用多个配置。
  • 不依赖于其他第三方组件。
  • 在PHP 7.3及以上版本中测试,包括PHP 8.0。符合PSR-12编码风格。

安装

通过composer安装

composer require fresh-advance/array-validator

使用示例

use Sieg\ArrayValidator\Keys;
use Sieg\ArrayValidator\Rule;
use Sieg\ArrayValidator\RuleCase;
use Sieg\ArrayValidator\RuleCaseCollection;
use Sieg\ArrayValidator\Validator;

$configurationExample = new RuleCaseCollection(
    new RuleCase(
        new Keys\All(),
        new Rule\LengthRange(5, 7)
    ),
    new RuleCase(
        new Keys\Collection('field1', 'field3'),
        new Rule\Expression('/value\d+/')
    ),
    new RuleCase(
        new Keys\Expression('/2$/'),
        new Rule\Expression('/value\d+/'),
        'Special message'
    )
);

$dataExample = [
    'field1' => 'value1',
    'field2' => 'something'
];

$validator = new Validator($configurationExample);
$errors = $validator->validate($dataExample);
if (empty($errors)) {
    // array fits validation configuration
    echo 'ok';
} else {
    print_r($errors);
}

以字段作为键提供验证错误

Array
(
    [field2] => Array
        (
            [0] => VALIDATOR_RULE_LENGTH_TOO_HIGH
            [1] => Special message
        )

    [field3] => Array
        (
            [0] => VALIDATOR_RULE_EXPRESSION_MATCH_FAILED
        )
)

预定义规则

组件实现了一些基本规则

  • Callback(closure $closure)

    • 接受闭包作为参数。 $key$data 将发送到闭包。
  • EqualsTo(mixed $value)

    • 检查值是否等于规则 $value 参数。
  • EqualsToKey(string $key)

    • 检查值是否等于其他键值。
  • Expression(string $regex)

    • 接受正则表达式作为参数。
  • Filter(int $filterRule, array $filterOptions)

    • 规则使用 filter_var 函数进行验证。
    • 接受PHP过滤器常量作为第一个参数
      • FILTER_VALIDATE_EMAIL
      • FILTER_VALIDATE_FLOAT
      • FILTER_VALIDATE_INT
      • FILTER_VALIDATE_IP
      • FILTER_VALIDATE_MAC
      • FILTER_VALIDATE_REGEXP
      • FILTER_VALIDATE_URL
    • 接受 filter_var 选项数组作为第二个参数。
    • 有关更多信息,请参阅 filter_var 函数文档https://php.ac.cn/manual/en/function.filter-var.php
  • InArray(array $choices)

  • Length(int $length)

  • LengthRange(int $min, int $max)

  • Max(int $max)

  • MaxLength(int $max)

  • Min(int $min)

  • MinLength(int $min)

  • Range(int $min, int $max)

  • Required

    • 检查字段是否存在且非空

创建和使用自定义规则

  • 自定义规则应扩展 \Sieg\ArrayValidator\Rule\AbstractRule
  • 将其用作组件附带的标准规则。
  • 验证器捕获 \Sieg\ArrayValidator\Exception\RuleFailed 类型的异常以设置字段错误消息。