首页 > 作文

ThinkPHP类似AOP思想的参数验证的实现方法

更新时间:2023-04-08 04:14:37 阅读: 评论:0

思路讲解:不管是在开发 api 还是做后台项目的时候,后端永远不要相信前端传输的参数,通常要做的是验证参数的合法性和安全性。那么在实际项目开发的时候,怎么简便的验证参数呢。tp 提供了好几种参数验证的方式,比如验证器,独立验证,又或者在继承 controller 基类的情况下使用 validate 方法。相比而言,验证器还是最佳选择。一个控制器有多个方法,也就表示有多个请求,也就表示有多个场景。一个项目不止一个控制器,那就表示不止需要建立一个验证器。面向对象的思想,就需要我们建立一个基类验证器,然后让子类继承就行了。那么怎么实现参数验证呢,下面我就介绍下类似 aop 思想的参数验证的实现。

定义验证器基类

定义基类 app\common\validator\bavalidator.php

<?phpnamespace app\common\validator;u app\common\exception\paramexception;u think\validate;class bavalidator extends validate{  /**   * @param string $scene   * @return bool   * @throws paramexception   */  public function checkparams($scene='')  {    $params = input('param.');    $res = $this->sce标准工资表ne($scene)->check($params);    if( ! $res ){      $error =励志的英文歌曲 $this->error;      if(is_array($error)){        $error = implode(',',$error);      }      throw new paramexception(['errmsg'=>$error,]);    }    return $res;  }  //自定义验证规则}

定义验证器

<?phpnamespace app\common\validator\ur;u app\common英雄的事迹\validator\bavalidator;class urvalidator extends bavalidator{  protected $ru比的文言文意思le =  [    'name' => 'require|max:25',    'age'  => 'number|between:1,120',    'email' => 'email',  ];  protected $message =  [    'name.require' => '名称必须',    运动会入场'name.max'   => '名称最多不能超过25个字符',    'age.number'  => '年龄必须是数字',    'age.between' => '年龄只能在1-120之间',    'email'    => '邮箱格式错误',  ];  protected $scene = [    'register' => ['name','email'],  ];}

验证参数

ur.php 控制器 register 方法,实例化验证器,并进行场景验证。

  public function register(request $request){    $validator = new urvalidator();    $validator->checkparams('register');    .    .    .  }  

至此,类似于 aop 思想的参数验证就完成了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

本文发布于:2023-04-08 04:14:36,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/957cdec37bc0abe840741fa9e1e4209f.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:ThinkPHP类似AOP思想的参数验证的实现方法.doc

本文 PDF 下载地址:ThinkPHP类似AOP思想的参数验证的实现方法.pdf

标签:参数   多个   控制器   也就
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图