我是靠谱客的博主 耍酷酸奶,最近开发中收集的这篇文章主要介绍TP5-validate验证器 构建自己的验证层,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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

独立验证
                use thinkvalidate ;

                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 appapivalidate;
        use thinkValidate;
        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()) ;
            }
<?php


namespace appapivalidate;


use applibexceptionParameterException;
use thinkValidate;
use thinkRequest ;

class BaseValidate extends Validate
{
    /**
     * 获取到参数
     * 调用check方法 拉取验证规则验证
     */
    public function goCheck()
    {
        //request 对象实例化
        $request = Request::instance();
        //调用param()方法获取到http请求的所有参数
        $params = $request->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了  

<?php


namespace appapicontrollerV1;


use appapivalidateIDMustBePostiveInt;
use appapimodelBanner as BannerModel ;
use applibexceptionBannerMissException;
use thinkException;

class Banner
{
    /**
     * 接口说明 获取指定id的banner信息
     * @url /banner/:id
     * @http GET
     * @id banner的id号
     */
    public function getBanner($id)
    {
        //调用验证器
        (new IDMustBePostiveInt())->goCheck()  ;
        /**
         * 调用 model返回 banner信息
         */
        $banner = BannerModel::getBannerByID($id) ;
        if(!$banner) {
            throw new BannerMissException() ;
        }
        return $banner ;


    }
}

 

 

最后

以上就是耍酷酸奶为你收集整理的TP5-validate验证器 构建自己的验证层的全部内容,希望文章能够帮你解决TP5-validate验证器 构建自己的验证层所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部