verdient / validator
A library for validating
Installs: 181
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/verdient/validator
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默认为空