PackageValidate.class.php
2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
/**
* Created by IntelliJ IDEA.
* User: zhoutao
* Date: 2017/1/23
* Time: 上午10:23
*
* 在初始化的时候 new PackageValidate(验证规则, 报错码, 接收的提交字段);
* 当 "接收的提交字段" 不为空时, 会自动执行getParams获取提交数据, 在getParams里当rule不为空时, 自动执行验证器验证
*
* 也可以不自动处理, 实例化的时候不提供参数就行, 后面自行操作
*/
namespace Com;
class PackageValidate extends Validate
{
/** 手机正则规则 */
const PHONE_REGEX = '/(^0?1[2,3,4,5,6,7,8,9]\d{9}$)|(^(\d{3,4})-(\d{7,8})$)|(^(\d{7,8})$)|(^(\d{3,4})-(\d{7,8})-(\d{1,4})$)|(^(\d{7,8})-(\d{1,4})$)/';
// TODO 根据需求 任意人 持续添加正则或者其他常用规则 2017-01-22 15:47:11 zhoutao
/**
* 提交的字段
* @var array
*/
public $postField = [];
/**
* 提交的数据
* @var array
*/
public $postData = [];
/**
* 实例化
* PackageValidate constructor.
* @param array $rules 验证规则
* @param array $message 报错码
* @param array $postField 接收的提交字段
*/
public function __construct(array $rules = [], array $message = [], $postField = [])
{
parent::__construct($rules, $message);
if (!empty($postField) && is_array($postField)) {
$this->postField = $postField;
$this->getParams();
}
}
/**
* set
* @param $name
* @param $value
*/
public function __set($name, $value)
{
$this->name = $value;
}
/**
* 获取提交数据
* @param array $field 字段
* @return bool
*/
public function getParams(array $field = [])
{
$field = empty($field) ? $this->postField : $field;
// 获取不为空的提交值
foreach ($field as $name) {
$tmp = I('post.' . $name);
if (!empty($tmp) || $tmp == '0') {
$this->postData[$name] = $tmp;
}
}
// 如果存在规则数据, 则自动验证
if (!empty($this->rule)) {
return $this->validateParams();
}
return true;
}
/**
* 验证数据
* @param array $rule 验证规则
* @param array $message 报错码
* @return bool
*/
public function validateParams(array $rule = [], array $message = [])
{
// 验证数据
$validate = Validate::make(
empty($this->rule) ? $rule : $this->rule,
empty($this->message) ? $message : $this->message
);
$validateResult = $validate->check($this->postData, $rule);
// 抛错
if (!$validateResult) {
E($validate->getError());
}
return true;
}
}