## 自动验证 依赖核心扩展类 verify.class.php
需要建立用户自定义模型文件
例如: home/model/ 目录下建立 user.class.php
继承 verify 类,所有规则都写在 $roles 数组中
$roles 数组的键名(username email age)是要验证的字段名,键值数组是验证规则
规则当中最后一个参数 'add' 和 'both' 是验证时机
<?php
namespace m;
use \ext\verify;
class user extends verify{
protected $returnMod = 2; //设置返回时机
protected $roles = [
'username'=>[ //验证 username 字段
'unique'=>['该用户已被注册!','add'], //验证 unique 规则
'length'=>[3,18,'用户名长度必须在3-18之间','both'], //验证 length 规则
'notnull'=>['username必填!'], //验证 notnull 规则
'must'=>true, //不论提交的数据是否存在该字段都进行验证
],
'email'=>[ //验证 email 字段
'email'=>['电子邮件格式不正确!','both'], //验证email规则
],
'age'=>[ //验证 age 字段
'myfun'=>['checkage','年龄不符合要求'], //使用自定义函数 checkage()进行验证
],
//...更多字段的验证规则
];
protected function checkage($value,$key){ //自定义的验证函数
if($value < 1 || $value > 100) return false;
else return true;
}
/*以下根据需求写自定义操作*/
public function addUser(){ //自定义的 addUser 操作
$result = $this->add($_POST);
if($result) return true;
else return false;
}
//... 其它自定义操作
}
## 规则说明
非空: 'notnull' => ['提示信息','验证时机'],
唯一: 'unique' => ['提示信息','验证时机'],
邮箱: 'email' => ['提示信息','验证时机'],
数字: 'number' => ['提示信息','验证时机'],
长度: 'length' => [1,10,'提示信息','验证时机'], //长度范围是一个参数时验证长度相等,
区间: 'between' => [1,10,'提示信息','验证时机'],
相等: 'eq' => ['要比较的另一字段','提示信息','验证时机'],
正则: 'preg' => ['正则表达式','提示信息','验证时机'],
必须: 'must' => true/false //为真时则不管数据是否有此字段都要验证,默认false(有此字段时才验证)
## 验证时机
**默认为 'both'**
'add' //添加数据时验证
'update' //更新数据时验证
'both' //添加和更新时都验证
## 返回时机
**默认为 某个字段验证失败就返回**
模型中定义成员变量:protected $returnMod = 1;
$returnMod = 0 //全部验证完毕之后返回
$returnMod = 1 //某个字段验证失败返回(默认)
$returnMod = 2 //某一条规则验证失败返回
>[danger] 注意,要实现自动验证只有下面三种方法
$m = M('user');
$m->add($add); //添加数据 add()方法
$m->save($save); //更新数据 save()方法
$m->create($_POST); //主动验证,参数为空时默认是$_POST