verdient/validator

A library for validating

0.2.0 2021-05-12 02:18 UTC

This package is not auto-updated.

Last update: 2024-05-08 16:59:10 UTC


README

批量校验数据

use Verdient\Validator\Validation;

/**
 * 限定条件,格式为数组
 * 第一级的Key为字段的名称,value为索引数组,数组内的每一个数组代表一个校验规则
 * 校验规则格式为:第一个元素为校验器的名字,其后的参数为注入到校验器内的参数
 */
$constraints = [
		'mobile' => [
			['mobile'], //规则1,要求必须是手机号码
			['string'], //规则2,要求必须是字符串
		],
		'date' => [
			['date', 'min' => '2020-02-02', 'max' => '2020-02-02'] //校验是否为日期,且最大最小日期均为2020-02-02
		],
		'in' => [
			['in', 'range' => [1, 2, 3]] //校验是否为1, 2, 3中的一个(或多个)
		], ...
];

/**
 * 要校验的数据
 */
$data = [
	'mobile' => '15757116316',
	'date' => '2020-02-02',
	'in' => 1, ...
];

$result = $validation->validate($data); //返回结果为true或false

校验单个数据

use Verdient\Validator\Validators\In;

$validator = new In(['range' => [1, 2, 3]]);
$result = $validator->validate(4);

获取错误信息

$errors = $validation->getErrors();

获取第一个错误

$firstError = $errors->first(); //返回的结果为数组,key为字段名称,value为提示信息

直接取得错误提示信息

$message = (string) $errors;

校验器及其参数

名称 简述 参数 [默认值] 释义
required 校验是否为空
string 校验是否为字符串 min [false] 最小长度
max [false] 最大长度
length [false] 长度,当length和min或者max同时设置时,已length的设置为准
charset [false] 字符集
tooShort 长度过短时的提示信息
tooLong 长度过长时的提示信息
wrongLength 长度不匹配时的提示信息
wrongCharset 字符集不匹配时的提示信息
mobile 校验是否为合法的手机号码
in 校验是否在给定的范围内 range 范围
strict [false] 是否严格匹配
date 校验是否为日期 format [Y-m-d] 格式
min [false] 最小日期
max [false] 最大日期
tooSmall 日期过小提示信息
tooBig 日期过大提示信息
number | integer | int 校验是否为数字 | 整数 min [false] 最小
max [false] 最大
tooSmall 数字过小提示信息
tooBig 数字过大提示信息
decimal 校验是否小数 min [false] 最小
max [false] 最大
tooSmall 数字过小提示信息
tooBig 数字过大提示信息
decimal 做多允许的小数点位数
wrongDecimal 当小数点错误时的提示
email 校验是否为电子邮件地址 checkDNS [false] 是否检查DNS
ip 校验是否为IP地址 ipv4 [true] 是否允许IPv4地址
ipv6 [true] 是否允许IPv6地址
subnet [false] 子网信息 - false 不允许携带子网 | true 必须包含子网信息 | null 子网信息可选
negation [false] 是否允许包含取反标志位
ipv4NotAllowed IPv4不被允许时的提示信息
ipv6NotAllowed IPv6不被允许时的提示信息
noSubnet 不包含子网信息时的提示信息
hasSubnet 包含子网信息时的提示信息
url 校验是否为url地址 schemes [http, https] 允许的协议
chineseIDCard 校验是否为中国身份证号码 enable15 [true] 是否允许15位身份证号码(第一代身份证)
uuid 校验是否为UUID version [*] 特定的版本,*代表所有版本
array 校验是否为数组 indexded[false] 是否仅索引数组
distinct 是否不允许重复值[false]
min 数组中元素数量下限[false]
max 数组中元素数量上限[false]
noIndexd 数组不为索引数组时的提示
hasDuplicate 数组中存在重复值时的提示
tooSmall 数组过小时的提示
tooBig 数组过大时的提示
bool 校验是否为布尔值
money 校验是否为金额 参数同decimal
snowflake 校验是否为Snowflake ID
pagination 校验是否为页码及分页大小 参数同integer
safe 安全校验器,该校验器不会对数据做任何校验,用于从data()函数直接获取传入的数据

公共参数

名称 简述 参数 [默认值] 释义
skipOnEmpty 是否在为空时跳过 bool[true]
allowArray 是否允许数组 bool[true] 当该值为true时,相当于循环调用校验器(除array校验器)
message 校验错误时的提示信息 {name}校验失败 {name}会被替换为属性名称
isArray 传入数据为数组时的提示信息 {name}不能为数组(对象) 仅在allowArray为false时生效
when 限定条件 array[null] 只有符合限定条件是时,校验器才会执行
name 显示的名称 string[null] 用于覆盖错误信息中字段的名称

限定条件

可以在声明限定条件时指定when参数来限定校验器的执行,只有当限定条件满足时,校验器才会真正的被执行,否则将会跳过校验器的检查。

参数的格式为:

$when = ['{name}', '{operator}', '{comparedValue}'];

name代指属性名称,operator为操作符,comparedValue为被比较的值

其中name和value必填,comparedValue默认为空