1515- 支持基本的数组检查,数组的子级值检查
1616- 方便的获取错误信息,验证后的安全数据获取
1717- 已经内置了40多个常用的验证器[ 内置验证器] ( #built-in-validators )
18- - 规则设置参考自 yii 的。 部分规则参考自 laravel
18+ - 规则设置参考 yii. 部分规则参考自 laravel, Respect/Validation
1919- 新增了独立的过滤器 ` Inhere\Validate\Filter\Filtration ` 用于数据过滤
2020
2121支持两种规则配置方式:
5656
5757- 使用 composer 命令
5858
59- ``` bash
60- composer require inhere/php-validate
61- // composer require inhere/php-validate ^version // 指定版本
59+ ``` php
60+ composer require inhere/php-validate
61+ // composer require inhere/php-validate ^2.2
6262```
6363
6464- 使用 composer.json
@@ -97,14 +97,14 @@ class PageRequest extends Validation
9797 {
9898 return [
9999 ['tagId,title,userId,freeTime', 'required'],
100- ['tagId', 'size', 'min'=>4, 'max'=>567], // 4<= tagId <=567
101- ['title', 'min', 40],
100+ ['tagId', 'size', 'min'=>4, 'max'=>567, 'filter' => 'int' ], // 4<= tagId <=567
101+ ['title', 'min', 40, 'filter' => 'trim' ],
102102 ['freeTime', 'number'],
103103 ['tagId', 'number', 'when' => function($data) {
104104 return isset($data['status']) && $data['status'] > 2;
105105 }],
106- ['userId', 'number', 'on' => 'scene1' ],
107- ['username', 'string', 'on' => 'scene2' ],
106+ ['userId', 'number', 'on' => 'scene1', 'filter' => 'int' ],
107+ ['username', 'string', 'on' => 'scene2', 'filter' => 'trim' ],
108108 ['username', 'regexp' ,'/^[a-z]\w{2,12}$/'],
109109 ['title', 'customValidator', 'msg' => '{attr} error msg!' ], // 指定当前规则的消息
110110 ['status', function($status) { // 直接使用闭包验证
@@ -376,8 +376,7 @@ $v = Validation::make($_POST,[
376376 {
377377 return [
378378 ['title', 'required' ],
379- ['tagId', 'number', 'when' => function($data)
380- {
379+ ['tagId', 'number', 'when' => function($data) {
381380 return isset($data['status']) && $data['status'] > 2;
382381 }],
383382 ];
@@ -514,6 +513,7 @@ public function isFail() // hasError() 的别名方法
514513public function fail() // hasError() 的别名方法
515514
516515// 成功通过验证
516+ public function ok()
517517public function passed()
518518public function isPassed() // passed() 的别名方法
519519```
@@ -597,17 +597,19 @@ public function get(string $key, $default = null)
597597
598598过滤器 | 说明 | 示例
599599-------|-------------|------------
600- ` int/integer ` | 过滤非法字符并转换为` int ` 类型 | ` ['userId', 'number', 'filter' => 'int'], `
600+ ` abs ` | 返回绝对值 | ` ['field', 'int', 'filter' => 'abs'], `
601+ ` int/integer ` | 过滤非法字符并转换为` int ` 类型 ** 支持数组** | ` ['userId', 'number', 'filter' => 'int'], `
601602` float ` | 过滤非法字符,保留` float ` 格式的数据 | ` ['price', 'float', 'filter' => 'float'], `
602603` string ` | 过滤非法字符并转换为` string ` 类型 | ` ['userId', 'number', 'filter' => 'string'], `
603604` trim ` | 去除首尾空白字符,支持数组。 | ` ['username', 'min', 4, 'filter' => 'trim'], `
605+ ` nl2br ` | 转换 ` \n ` ` \r\n ` ` \r ` 为 ` <br/> ` | ` ['content', 'string', 'filter' => 'nl2br'], `
604606` lower/lowercase ` | 字符串转换为小写 | ` ['description', 'string', 'filter' => 'lowercase'], `
605607` upper/uppercase ` | 字符串转换为大写 | ` ['title', 'string', 'filter' => 'uppercase'], `
606608` snake/snakeCase ` | 字符串转换为蛇形风格 | ` ['title', 'string', 'filter' => 'snakeCase'], `
607609` camel/camelCase ` | 字符串转换为驼峰风格 | ` ['title', 'string', 'filter' => 'camelCase'], `
608610` timestamp/strToTime ` | 字符串日期转换时间戳 | ` ['pulishedAt', 'number', 'filter' => 'strToTime'], `
609- ` abs ` | 返回绝对值 | ` ['field', 'int', 'filter' => 'abs'], `
610611` url ` | URL 过滤,移除所有不符合 URL 的字符 | ` ['field', 'url', 'filter' => 'url'], `
612+ ` str2list/str2array ` | 字符串转数组 ` 'tag0,tag1' -> ['tag0', 'tag1'] ` | ` ['tags', 'strList', 'filter' => 'str2array'], `
611613` email ` | email 过滤,移除所有不符合 email 的字符 | ` ['field', 'email', 'filter' => 'email'], `
612614` encoded ` | 去除 URL 编码不需要的字符,与 ` urlencode() ` 函数很类似 | ` ['imgUrl', 'url', 'filter' => 'encoded'], `
613615` clearTags/stripTags ` | 相当于使用 ` strip_tags() ` | ` ['content', 'string', 'filter' => 'clearTags'], `
@@ -623,11 +625,11 @@ public function get(string $key, $default = null)
623625
624626验证器 | 说明 | 规则示例
625627----------|-------------|------------
626- ` int/integer ` | 验证是否是 int | ` ['userId', 'int'] `
627- ` num/number ` | 验证是否是 number | ` ['userId', 'number'] `
628+ ` int/integer ` | 验证是否是 int ** 支持范围检查 ** | ` ['userId', 'int'] ` ` ['userId', 'int', 'min'=>4, 'max'=>16 ]`
629+ ` num/number ` | 验证是否是 number ** 支持范围检查 ** | ` ['userId', 'number'] ` ` ['userId', 'number', 'min'=>4, 'max'=>16 ]`
628630` bool/boolean ` | 验证是否是 bool | ` ['open', 'bool'] `
629631` float ` | 验证是否是 float | ` ['price', 'float'] `
630- ` string ` | 验证是否是 string. 支持长度检查 | ` ['name', 'string'] ` , ` ['name', 'string', 'min'=>4, 'max'=>16] `
632+ ` string ` | 验证是否是 string. ** 支持长度检查** | ` ['name', 'string'] ` , ` ['name', 'string', 'min'=>4, 'max'=>16] `
631633` url ` | 验证是否是 url | ` ['myUrl', 'url'] `
632634` email ` | 验证是否是 email | ` ['userEmail', 'email'] `
633635` alpha ` | 验证值是否仅包含字母字符 | ` ['name', 'alpha'] `
@@ -636,14 +638,18 @@ public function get(string $key, $default = null)
636638` isMap ` | 验证值是否是一个非自然数组 map (key - value 形式的) | ` ['goods', 'isMap'] `
637639` isList ` | 验证值是否是一个自然数组 list (key是从0自然增长的) | ` ['tags', 'isList'] `
638640` isArray ` | 验证是否是数组 | ` ['goods', 'isArray'] `
641+ ` hasKey ` | 验证数组存在给定的key(s) | ` ['goods', 'hasKey', 'pear'] ` ` ['goods', 'hasKey', ['pear', 'banana']] `
639642` intList ` | 验证字段值是否是一个 int list | ` ['tagIds', 'intList'] `
640643` numList ` | 验证字段值是否是一个 number list | ` ['tagIds', 'numList'] `
641644` strList ` | 验证字段值是否是一个 string list | ` ['tags', 'strList'] `
642645` min ` | 最小边界值验证 | ` ['title', 'min', 40] `
643646` max ` | 最大边界值验证 | ` ['title', 'max', 40] `
644647` size/range/between ` | 验证大小范围, 可以支持验证 ` int ` , ` string ` , ` array ` 数据类型 | ` ['tagId', 'size', 'min'=>4, 'max'=>567] `
645648` length ` | 长度验证( 跟 ` size ` 差不多, 但只能验证 ` string ` , ` array ` 的长度 | ` ['username', 'length', 'min' => 5, 'max' => 20] `
646- ` in/enum ` | 枚举验证 | ` ['status', 'in', [1,2,3] `
649+ ` fixedSize/fixedLength ` | 固定的长度/大小 | ` ['field', 'fixedSize', 12] `
650+ ` startWith ` | 值(` string/array ` )是以给定的字符串开始 | ` ['field', 'startWith', 'hell'] `
651+ ` endWith ` | 值(` string/array ` )是以给定的字符串结尾 | ` ['field', 'endWith', 'world'] `
652+ ` in/enum ` | 枚举验证 | ` ['status', 'in', [1,2,3]] `
647653` notIn ` | 枚举验证 | ` ['status', 'notIn', [4,5,6]] `
648654` mustBe ` | 必须是等于给定值 | ` ['status', 'mustBe', 1] `
649655` notBe ` | 不能等于给定值 | ` ['status', 'notBe', 0] `
@@ -663,12 +669,13 @@ public function get(string $key, $default = null)
663669` beforeOrEqualDate ` | 字段值必须是小于或等于给定日期的值 | ` ['publishedAt', 'beforeOrEqualDate', '2017-05-12'] `
664670` afterOrEqualDate ` | 字段值必须是大于或等于给定日期的值 | ` ['publishedAt', 'afterOrEqualDate', '2017-05-12'] `
665671` afterDate ` | 验证字段值必须是给定日期之前的值 | ` ['publishedAt', 'afterDate', '2017-05-12'] `
666- ` json ` | 验证是否是json字符串 | ` ['goods', 'json'] `
672+ ` json ` | 验证是否是json字符串(默认严格验证,必须以 ` { ` ` [ ` 开始) | ` ['goods', 'json'] ` ` ['somedata', 'json', false] ` - 非严格,普通字符串 ` eg 'test' ` 也会通过
667673` file ` | 验证是否是上传的文件 | ` ['upFile', 'file'] `
668674` image ` | 验证是否是上传的图片文件 | ` ['avatar', 'image'] ` , 限定后缀名 ` ['avatar', 'image', 'jpg,png'] `
669675` ip ` | 验证是否是 IP | ` ['ipAddr', 'ip'] `
670676` ipv4 ` | 验证是否是 IPv4 | ` ['ipAddr', 'ipv4'] `
671677` ipv6 ` | 验证是否是 IPv6 | ` ['ipAddr', 'ipv6'] `
678+ ` macAddress ` | 验证是否是 mac Address | ` ['field', 'macAddress'] `
672679` md5 ` | 验证是否是 md5 格式的字符串 | ` ['passwd', 'md5'] `
673680` sha1 ` | 验证是否是 sha1 格式的字符串 | ` ['passwd', 'sha1'] `
674681` color ` | 验证是否是html color | ` ['backgroundColor', 'color'] `
0 commit comments