TP5-validate验证器 构建自己的验证层

TP5自带的  validate常用来进行校验 分为独立验证和验证器两种

服务器端给客户端(小程序|app|后台CMS不分离的话也算)提供接口的时候  客户端参数尤其要进行校验

独立验证
                use think\validate ;

                class Banner
                {
                    /**
                     * 接口说明 获取指定id的banner信息
                     * @url /banner/:id
                     * @http GET
                     * @id banner的id号
                     */
                    public function getBanner($id)
                    {
                        $data = [
                            'name'=>'vender11111' ,
                            'email'=>'venderqq.com'
                        ] ;
                        //require,email为validate内置规则  官方文档->验证->内置规则
                        $validata = new validate([
                            'name' => 'require|max:10' ,
                            'email' => 'email'
                        ]) ;
                        //调用check()方法 校验  返回字符串
                        $result = $validata->check($data) ;
                        //调用 batch()->check()批量验证 返回数组
                        $result1 = $validata->batch()->check($data) ;
                        var_dump($validata->getError()) ;
                //        return '123' ;
                    }
                }

 

验证器(自定义验证类   extends validate)
    1>自定义验证器
        namespace app\api\validate;
        use think\Validate;
        class TestValidate extends Validate
        {
            //默认变量  数组格式 protected $rule
            protected $rule = [
                'name' => 'require|max:10' ,
                'email' => 'email'
            ] ;
           //此处 可以 自定义验证规则
        }
    2>调用验证
        public function getBanner($id)
            {
                $data = [
                    'name'=>'vender11111' ,
                    'email'=>'venderqq.com'
                ] ;
                //调用验证器
                $validata = new TestValidate() ;
                //调用check()方法 校验  返回字符串
                $result = $validata->check($data) ;
                //调用 batch()->check()批量验证 返回数组
                $result1 = $validata->batch()->check($data) ;
                var_dump($validata->getError()) ;
            }
param() ;
        //check()单一参数校验
//        $result = $this->check($params) ;
        //batch()->check 参数批量校验
        $result = $this->batch()->check($params) ;
        if(!$result)
        {
           /*
           此处 可以优化 通过 构造函数赋值
           //抛出自定义异常
            $e = new ParameterException() ;
            $e->msg = $this->error ;
            throw $e ;*/
           $e = new ParameterException([
               'msg' => $this->error
           ]) ;
           throw $e ;
            /*//获取错误信息
            $error = $this->error ;
            //中断脚本 抛出异常
            throw new Exception($error) ;*/
        }else {
            return true ;
        }
    }
}

如此一来  控制器里面 调用验证就 so easy了  

goCheck()  ;
        /**
         * 调用 model返回 banner信息
         */
        $banner = BannerModel::getBannerByID($id) ;
        if(!$banner) {
            throw new BannerMissException() ;
        }
        return $banner ;


    }
}

 

 

你可能感兴趣的:(计算机,服务器,开发)