手记

【备战春招】第4天 微信小程序电商实战-验证层

课程章节:构建验证层

课程讲师:7 七月

课程内容:

4-7 工欲善其事必先利其器

  1. 在 api 目录下创建文件夹 validate(验证层)

  2. validate 的每个验证器可以校验一类的验证规则,提高代码的复用性。使参数校验流程和逻辑变得更清晰

  3. 逐渐扩展验证层,当验证器的类库足够多时,还可以把Validate整个文件夹作为类库单独提取出来放到其他项目使用

  4. 封装的意义(思想):(工具)不仅可以在一个项目里被复用,还可以被多个项目复用

  5. 验证器基类 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();

课程收获:

  1. 重点:全局验证层的构造

  2. 预习:全局异常处理和信息返回

  3. 思考:客户端的错误提示和开发人员的错误定位

  4. 学习:其他成熟的验证器类库的设计思想

  5. 拓展学习:中间件

0人推荐
随时随地看视频
慕课网APP