引入:
use
think\Validate;
eg:验证参数必须是正整数
- IDMustBePostiveInt.php
namespace app\api\validate;
use think\Exception;
use think\Validate;
class IDMustBePostiveInt extends BaseValidate
{
protected $rule = [
'id' => 'require|isPositiveInteger'
];
protected function isPositiveInteger($value, $rule='', $data='', $field=''){
if(is_numeric($value) && is_int($value + 0) && ($value + 0) > 0)
{
return true;
}else{
return $field.'必须是正整数';
}
}
}
-
其中变量$rule格式固定,定义的是验证规则,规则可以自定义
- isPositiveInteger是自定义的验证规则,(return $field.'必须是正整数';)是自定义的返回错误信息
- 继承的BaseValidate类是封装的验证过程类
- BaseValidate.php
use think\Exception;
use think\exception\ErrorException;
use think\Request;
use think\Validate;
class BaseValidate extends Validate
{
public function goCheck()
{
//获取http传入的参数
//对这些参数做校验
$request = Request::instance();
$params = $request->param();
$result = $this->check($params);
echo $result;
if(!$result){
echo $this->error;
throw new Exception($this->error);
exit(0);
}else{
return true;
}
}
}
- 继承thinkPHP的Validate类
- $params是个数组,存储所有客户端传来的参数
- 调用自身的check()方法开始验证,check()方法会根据自定义的验证规则进行参数校验
- $this->error可以获取错误信息
最后在需要校验的地方只要简单引用一下就好
例如验证整数,在类里输入这句语句即可:(new IDMustBePostiveInt())->goCheck();