verdient / validator
A library for validating
0.2.0
2021-05-12 02:18 UTC
Requires
- php: >=7.0.0
- verdient/chorus: ~0.1.0
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 | 当小数点错误时的提示 | ||
校验是否为电子邮件地址 | 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默认为空