ThinkPHP类似AOP思想的参数验证的实现方法
发布:smiling 来源: PHP粉丝网 添加日期:2022-01-29 09:51:18 浏览: 评论:0
思路讲解:不管是在开发 API 还是做后台项目的时候,后端永远不要相信前端传输的参数,通常要做的是验证参数的合法性和安全性,那么在实际项目开发的时候,怎么简便的验证参数呢,TP 提供了好几种参数验证的方式,比如验证器,独立验证,又或者在继承 Controller 基类的情况下使用 validate 方法,相比而言,验证器还是最佳选择。一个控制器有多个方法,也就表示有多个请求,也就表示有多个场景,一个项目不止一个控制器,那就表示不止需要建立一个验证器。面向对象的思想,就需要我们建立一个基类验证器,然后让子类继承就行了,那么怎么实现参数验证呢,下面我就介绍下类似 AOP 思想的参数验证的实现。
定义验证器基类
定义基类 app\common\validator\BaseValidator.php
- <?php
- namespace app\common\validator;
- use app\common\exception\ParamException;
- use think\Validate;
- class BaseValidator extends Validate
- {
- /**
- * @param string $scene
- * @return bool
- * @throws ParamException
- */
- public function checkParams($scene='')
- {
- $params = input('param.');
- $res = $this->scene($scene)->check($params);
- if( ! $res ){
- $error = $this->error;
- if(is_array($error)){
- $error = implode(',',$error);
- }
- throw new ParamException(['errMsg'=>$error,]);
- }
- return $res;
- }
- //自定义验证规则
- }
定义验证器
- <?php
- namespace app\common\validator\user;
- use app\common\validator\BaseValidator;
- class UserValidator extends BaseValidator
- {
- protected $rule = [
- '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'],
- ];
- }
验证参数
User.php 控制器 register 方法,实例化验证器,并进行场景验证。
- public function register(Request $request){
- $validator = new UserValidator();
- $validator->checkParams('register');
- .
- .
- .
- }
至此,类似于 AOP 思想的参数验证就完成了。
Tags: ThinkPHP参数验证 AOP
- 上一篇:php 实现简单的登录功能示例【基于thinkPHP框架】
- 下一篇:最后一页
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)