本文主要是介绍ThinkPHP6 封装全局验证层的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天看到了一个全局验证层的代码封装,感觉挺实用的,所以在这里做个记录。
首先创建基类验证器,和一个需要使用的验证其,执行如下代码:
//创建基类验证器
php think make:validate BaseVlidate
//创建一个用户登录验证器
php think make:validate LoginVlidate
两个验证器创建好了之后我们就开始写代码封装了。
LoginVlidate.php文件代码如下:
<?php
declare (strict_types = 1);namespace app\validate;class LoginVlidate extends BaseVlidate
{/*** 定义验证规则* 格式:'字段名' => ['规则1','规则2'...]** @var array*/protected $rule = ['username'=>'require','password'=>'require','email'=>'require|email'];/*** 定义错误信息* 格式:'字段名.规则名' => '错误信息'** @var array*/protected $message = ['username.require'=>'用户名必须填写','email.email'=>'邮箱格式不正确','email.require'=>'邮箱不能为空'];
// 验证场景protected $scene = [//登录场景验证'login' => ['username','email'],];
}
BaseVlidate.php文件代码如下:
<?php
declare (strict_types = 1);namespace app\validate;use think\Validate;
use app\lib\exception\BaseException;class BaseVlidate extends Validate
{public function goCheck($scene = ''){//获取接收到的数据$params = request()->param();//用三元运算符判断是否存在场景验证,并返回给$check变量$check = empty($scene)?$this->check($params):$this->scene($scene)->check($params);//开始判断验证if(!$check){//这里需要注意的是我用的异常返回,也可以使用return,但是方法里面需要接收返回的return数据throw new BaseException(['message'=>$this->getError(),'code'=>500,'errorCode'=>10000]);}halt($params);}
}
定义好了之后我们只需要在方法里面执行验证即可。
//首先引入我们的验证器(验证器需继承基类验证器)
use app\validate\LoginVlidate;下面为控制器里面的方法调用内容--------------//现在我们实例化验证器并调用(无场景验证)
(new UserVlidate())->goCheck();//现在我们实例化验证器并调用(带场景验证)
(new UserVlidate())->goCheck('login');
这篇关于ThinkPHP6 封装全局验证层的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!