laurynasgadl / php-validator
PHP 数组值验证库
Requires
- php: >=8.0
- laurynasgadl/travers: ^2.0
Requires (Dev)
- phpunit/phpunit: ^10.0
README
受Laravel表单验证启发
use Luur\Validator\Validator; use Luur\Validator\Rules\Concrete\MinRule; use Luur\Validator\Rules\Concrete\RequiredRule; use Luur\Validator\Exceptions\ValidationFailed; $validator = new Validator(); $rules = [ 'client_id' => 'required|integer', 'amount' => [new RequiredRule(), new MinRule(0)], 'count' => 'between:-12,50', 'details' => 'array|required', '*.name' => 'string|required', ]; $params = [ 'client_id' => 12345, 'amount' => 1234, 'details' => [ 'name' => 'John Doe', ], ]; try { $allParams = $validator->validate($rules, $params); $validatedParams = $validator->validated(); } catch (ValidationFailed $exception) { var_dump($exception->getMessage()); }
安装
composer require laurynasgadl/php-validator
文档
规则
自定义规则
use Luur\Validator\Rules\AbstractRule; use Luur\Validator\Validator; class CustomRule extends AbstractRule { /** * @param mixed $value * @return bool */ public function passes($value) { return true; } } $validator = new Validator(); $params = ['test' => 123]; $result = $validator->validate([ 'test' => new CustomRule(), ], $params);
您还可以将规则注册为字符串以使用它
use Luur\Validator\Rules\AbstractRule; use Luur\Validator\Validator; class CustomRule extends AbstractRule { /** * @param mixed $value * @return bool */ public function passes($value) { return true; } } $validator = new Validator(); $validator->registerRule(CustomRule::getSlug(), CustomRule::class); $params = ['test' => 123]; $result = $validator->validate([ 'test' => 'test', ], $params);
现有规则
array
: 值必须是数组
between:{from_size},{to_size}
: 值必须在给定范围内
float
: 值必须是浮点数
integer
: 值必须是整数
max:{max_size}
: 值必须小于或等于给定数量
min:{min_size}
: 值必须大于或等于给定数量
required
: 参数必须在数据集中存在
required_with:{param_1}...
: 如果所有其他参数都存在,则参数必须在数据集中存在
required_without:{param_1}...
: 如果其他参数之一不存在,则参数必须在数据集中存在
size
: 值的大小必须等于给定数量。字符串的大小是其长度,数组的大小是其元素数量,布尔值的大小是0或1。
string
: 值必须是字符串
boolean
: 值必须是布尔值
numeric
: 值必须是数字
default:{value}
: 规则将始终首先应用,这意味着,即使参数的值未设置或为null,参数也可以成功通过required
规则
alpha_dash
: 值只能由大写和小写字母、数字以及-
或_
符号组成
alpha_numeric
: 值只能由大写和小写字母以及数字组成
regex:{pattern}
: 值必须匹配给定的模式
email
: 值必须是电子邮件
url
: 值必须以http://
或https://
开头,并且只能包含URL有效的符号
ip
: 值必须是IP地址
自定义消息
您可以通过Validator构造函数或validate方法设置自定义验证消息
use Luur\Validator\Validator; $validator = new Validator(); $rules = [ 'options.*.key' => 'string|required', ]; $params = [ 'options' => [ [ 'key' => 'passes', 'value' => true, ], [ 'key' => ['passes'], 'value' => false, ], ], ]; $messages = [ 'options.*.key.string' => 'Option key should be a string', ]; $validator->validate($rules, $params, $messages);