概述
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验证器 构建自己的验证层所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复