fresh-advance / array-validator
该组件通过提供的规则列表验证表单数据或任何给定的数组。
v2.2.0
2021-02-06 20:47 UTC
Requires
- php: >=7.3
Requires (Dev)
- phpstan/phpstan: ^0.12.54
- phpunit/phpunit: *
- squizlabs/php_codesniffer: *
README
简单的表单数据/任何数组验证工具。
- 组件通过提供的规则列表验证数组。
- 在单个验证运行中,可以为单个字段的单个规则使用多个配置。
- 不依赖于其他第三方组件。
- 在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
类型的异常以设置字段错误消息。