课程名称:微信小程序电商实战
课程章节:构建验证层
课程讲师:7 七月
课程内容:
4-7 工欲善其事必先利其器
-
在 api 目录下创建文件夹 validate(验证层)
-
validate 的每个验证器可以校验一类的验证规则,提高代码的复用性。使参数校验流程和逻辑变得更清晰
-
逐渐扩展验证层,当验证器的类库足够多时,还可以把Validate整个文件夹作为类库单独提取出来放到其他项目使用
-
封装的意义(思想):(工具)不仅可以在一个项目里被复用,还可以被多个项目复用
-
验证器基类 BaseValidate,继承 Validate,封装共用的验证逻辑
<?php
namespace app\api\validate;
use think\Exception;
use think\Request;
use think\Validate;
calss BaseValidate extends Validate
{
public function goCheck()
{
/*
* 1. 获取http传入的参数
* 2. 对这些参数做检验
*/
# 拿到Request实例对象
$request = Request::instance();
# 拿到Request所有参数
$params = $request->param();
# 调用继承的Validate类的验证方法
$result = $this->check($params);
# 对验证结果做处理,并返回结果给客户端
if (!$result) {
$error = $this->error;
# 抛出异常中断请求
throw new Exception($error);
// todo 这里使用TP5默认异常处理,后期改全局异常处理
} else {
returun true;
}
}
}
验证类IDMustBePostiveInt 继承BaseValidate
class IDMustBePostiveInt extends BaseValidate
在Banner控制器调用验证层做拦截器
(new IDMustBePostiveInt())->gocheck();
课程收获:
-
重点:全局验证层的构造
-
预习:全局异常处理和信息返回
-
思考:客户端的错误提示和开发人员的错误定位
-
学习:其他成熟的验证器类库的设计思想
-
拓展学习:中间件