1
- # php- validate
1
+ # php validate
2
2
3
3
一个简洁小巧且功能完善的php验证库。仅有几个文件,无依赖。
4
4
5
- 功能:
6
-
7
5
- 简单方便,支持添加自定义验证器
8
- - 规则设置参考自 yii 的。部分规则参考自 laravel
9
6
- 支持前置验证检查, 自定义如何判断非空
10
- - 支持将规则按场景进行分组设置
7
+ - 支持将规则按场景进行分组设置。或者部分验证
8
+ - 支持在进行验证前对值使用过滤器进行净化过滤[ 内置过滤器] ( #built-in-filters )
11
9
- 支持自定义每个验证的错误消息,字段翻译,消息翻译,支持默认值
12
10
- 支持基本的数组检查,数组的子级值检查
13
11
- 方便的获取错误信息,验证后的安全数据获取
14
- - 已经内置了30多个常用的验证器
12
+ - 已经内置了30多个常用的验证器[ 内置验证器] ( #built-in-validators )
13
+ - 规则设置参考自 yii 的。部分规则参考自 laravel
14
+ - ` RuleValidation ` 规则配置类似于Yii: 每条规则中,允许多个字段,但只能有一个验证器。
15
+ - e.g ` ['tagId,userId,name,email,freeTime', 'required', ...] ` (下面的示例都是这种)
16
+ - ` FieldValidation ` 规则配置类似于Laravel: 每条规则中,只能有一个字段,但允许多个验证器。
17
+ - e.g ` ['field', 'required|string:5,10|...', ...] `
18
+
19
+ > 新增了独立的过滤器 ` Inhere\Validate\Filter\Filtration ` . 只用于数据过滤。
15
20
16
21
## 项目地址
17
22
21
26
** 注意:**
22
27
23
28
- master 分支是要求 ` php >= 7 ` 的(推荐使用)。
24
- - php5 分支是支持 php 5 的代码分支
29
+ - php5 分支是支持 php 5 的代码分支(不再维护)
25
30
26
31
## 安装
27
32
@@ -104,7 +109,7 @@ class PageRequest extends Validation
104
109
return [
105
110
'required' => '{attr} 是必填项。',
106
111
// 可以直接针对字段的某个规则进行消息定义
107
- 'title.required' => 'O, 标题是必填项。',
112
+ 'title.required' => 'O, 标题是必填项。are you known? ',
108
113
];
109
114
}
110
115
}
@@ -268,14 +273,34 @@ $v = Validation::make($_POST,[
268
273
}]
269
274
```
270
275
271
- ## 规则关键词说明
276
+ ## 规则关键词
277
+
278
+ 除了可以添加字段的验证之外,还有一些特殊关键词可以设置使用,以适应各种需求。
272
279
273
280
### ` default ` -- 设置字段的默认值
274
281
275
282
给一个或多个字段设置一个默认值。
276
283
284
+ ``` php
285
+ ['page', 'number', 'default' => 1],
286
+ ['pageSize', 'number', 'default' => 15],
287
+ ```
288
+
277
289
> NOTICE: 默认值也会被验证器验证
278
290
291
+ ### ` msg ` -- 设置错误提示消息
292
+
293
+ 设置当前规则的错误提示消息, 设置了后就不会在使用默认的提示消息。
294
+
295
+ ``` php
296
+ ['title', 'customValidator', 'msg' => '{attr} error msg!' ], // 指定当前规则的消息
297
+ // o, 可以是数组哦 :)
298
+ ['tagId,title,userId,freeTime', 'required', 'msg' => [
299
+ 'tagId' => 'message ...',
300
+ 'userId' => 'message 1 ...',
301
+ ]],
302
+ ```
303
+
279
304
### ` on ` -- 设置规则使用场景
280
305
281
306
> 如果需要让定义的规则在多个类似情形下重复使用,可以设置规则的使用场景。在验证时也表明要验证的场景
@@ -338,8 +363,7 @@ $v = Validation::make($_POST,[
338
363
```
339
364
340
365
提交的数据中 没有 ` name ` 字段或者 ` $data['name'] ` 等于空都不会进行 ` string ` 验证;
341
- 只有当 ` $data['name'] ` 有值且不为空时才会验证是否是string
342
-
366
+ 只有当 ` $data['name'] ` ** 有值且不为空** 时才会验证是否是 ` string `
343
367
344
368
如果要想为空时也检查, 请将此字段同时加入 ` required ` 规则中.
345
369
@@ -366,14 +390,38 @@ $v = Validation::make($_POST,[
366
390
}]
367
391
```
368
392
369
- ### ` safe ` -- 标记属性/字段是安全的
393
+ ### ` filter ` -- 使用过滤器
370
394
371
- 标记属性/字段是安全的,无需验证,直接加入到安全数据中。
395
+ 支持在进行验证前对值使用过滤器进行净化过滤 [ 内置过滤器 ] ( #built-in-filters )
372
396
373
- 比如我们在写入数据库之前手动追加的字段: 创建时间,更新时间 。
397
+ > 允许同时使用多个过滤器。字符串使用 ` | ` 分隔,或者配置为数组 。
374
398
375
399
``` php
376
- ['createdAt, updatedAt', 'safe']
400
+ ['tagId,userId,freeTime', 'number', 'filter' => 'int'],
401
+ ['field', 'validator', 'filter' => 'filter0|filter1...'],
402
+ ```
403
+
404
+ > 过滤器请参看 http://php.net/manual/zh/filter.filters.sanitize.php
405
+
406
+ ### 一个完整的规则示例
407
+
408
+ 一个完整的规则示例, 包含了所有可添加的项。
409
+
410
+ ``` php
411
+ // a full rule:
412
+ [
413
+ // validate setting
414
+ 'field0,field1,...', 'validator', 'arg0', 'arg1', ...,
415
+
416
+ // some extended option settings
417
+ 'skipOnEmpty' => 'bool',
418
+ 'msg' => 'string|array',
419
+ 'default' => 'mixed',
420
+ 'on' => 'string|array'
421
+ 'isEmpty' => 'callback(string|closure)',
422
+ 'when' => 'callback(string|closure)',
423
+ 'filter' => 'callback(string|array|closure)'
424
+ ]
377
425
```
378
426
379
427
## 一些关键方法使用说明
@@ -497,6 +545,23 @@ public function get(string $key, $default = null)
497
545
498
546
从验证时传入的数据中取出对应 key 的值
499
547
548
+ <a name =" built-in-filters " ></a >
549
+ ## 内置的过滤器
550
+
551
+ 过滤器 | 说明 | 示例
552
+ -------|-------------|------------
553
+ ` int/integer ` | 过滤非法字符并转换为` int ` 类型 | ` ['userId', 'number', 'filter' => 'int'], `
554
+ ` float ` | 过滤非法字符,保留` float ` 格式的数据 | ` ['price', 'float', 'filter' => 'float'], `
555
+ ` string ` | 过滤非法字符并转换为` string ` 类型 | ` ['userId', 'number', 'filter' => 'string'], `
556
+ ` trim ` | 去除首尾空白字符,支持数组。 | ` ['username', 'min', 4, 'filter' => 'string|trim'], `
557
+ ` abs ` | 返回绝对值 | ` ['field', 'int', 'filter' => 'abs'], `
558
+ ` url ` | URL 过滤,移除所有不符合 URL 的字符 | ` ['field', 'url', 'filter' => 'url'], `
559
+ ` email ` | email 过滤,移除所有不符合 email 的字符 | ` ['field', 'email', 'filter' => 'email'], `
560
+ ` encoded ` | 去除 URL 编码不需要的字符,与 ` urlencode() ` 函数很类似 | ` ['imgUrl', 'url', 'filter' => 'encoded'], `
561
+ ` specialChars ` | 相当于使用 ` htmlspecialchars() ` 转义数据 | ` ['content', 'string', 'filter' => 'specialChars'], `
562
+ ` quotes ` | 应用 ` addslashes() ` 转义数据 | ` ['content', 'string', 'filter' => 'quotes'], `
563
+
564
+ <a name =" built-in-validators " ></a >
500
565
## 内置的验证器
501
566
502
567
> ` / ` 分隔的验证器,表明功能是一样的,只是有不同的别名
@@ -540,6 +605,17 @@ public function get(string $key, $default = null)
540
605
` ipv4 ` | 验证是否是 IPv4 | ` ['ipAddr', 'ipv4'] `
541
606
` ipv6 ` | 验证是否是 IPv6 | ` ['ipAddr', 'ipv6'] `
542
607
` regexp ` | 使用正则进行验证 | ` ['name', 'regexp', '/^\w+$/'] `
608
+ ` safe ` | 用于标记字段是安全的,无需验证 | ` ['createdAt, updatedAt', 'safe'] `
609
+
610
+ ### ` safe ` 验证器,标记属性/字段是安全的
611
+
612
+ 特殊验证器 用于标记字段是安全的,无需验证,直接加入到安全数据中。
613
+
614
+ 比如我们在写入数据库之前手动追加的字段: 创建时间,更新时间。
615
+
616
+ ``` php
617
+ ['createdAt, updatedAt', 'safe']
618
+ ```
543
619
544
620
### 一些补充说明
545
621
@@ -568,11 +644,11 @@ public function get(string $key, $default = null)
568
644
- ` required* ` 系列规则参考自 laravel
569
645
- ` size/range ` ` length ` 可以只定义 min 最小值。 但是当定义了max 值时,必须同时定义最小值
570
646
571
- ## 其他
647
+ ## 代码示例
572
648
573
649
可运行示例请看 ` examples `
574
650
575
- ## 测试
651
+ ## 单元测试
576
652
577
653
``` sh
578
654
./tests/test.sh
0 commit comments