Thinkphp5基础——11 validate验证

本文介绍了ThinkPHP5框架中 Validate 类的使用,包括验证器的两种用法和如何构建验证层。通过实例展示了如何创建验证类、进行独立验证,并详细解释了BaseValidate基类以及如何在Model层应用验证。

前言

Validate可以对参数进行验证,方便我们拦截恶意参数。

Validate有两种主要用法:独立验证验证器




验证器

首先,总览一下使用验证器的步骤。

步骤:

1)新建一个类,继承think\Validate。

2)该类有一个固定的protected属性rule

如果是自定义的规则的话,可以在类里面使用protected function定义一个函数进行指定。

这个函数的参数按照顺序分别是:验证数据、验证规则、全部数据(数组)、字段名、字段描述。


3)该类有一个固定的protected属性message,可以规定返回的错误信息,key是字段名,值是内容。

4)引入这个类,实例化。

5)使用batch( )处理批量数据校验。

6)使用check( )方法校验是否符合规则。

7)使用getError( )方法获取错误信息。

实例

Count.php(验证类文件)


namespace app\api\validate;

class Count
{
	// 字段校验规则
	protected $rule = [
	  'count' => 'isPostiveInteger|between:1,15',
	  ....
	];

	// 错误提示信息
	protected $message = [
	  'count' => 'count必须是在1~15之间',
	  ...
	];
	
	// 自定义验证规则
	protected function isPostiveInteger($value,$rule='',$data='',$field=''){
		if(is_numeric($value) && is_int($value + 0) && ($value + 0) > 0){
		  return true;
		}else{
		  return false;
		}
	}
}


Goods.php(调用验证类的文件)

use app\api\validate\Count;

class Goods
{
	$data = [
	  'count' => '111',
	  ...
	];
	
	$validate = new Count();
	
	$validate->batch()->check($data);
	if (!$validate) {
	  dump($validate->getError());
	}
}





独立验证

独立验证和验证器最大的区别是它的验证规则、错误提示信息是直接写在上文的。


$validate = new Validate([
    'name'  => 'require|max:25',
    'email' => 'email'
]);

$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com'
];

if (!$validate->check($data)) {
    dump($validate->getError());
}



构建Validate验证层


BaseValidate类

1)建立一个BaseValidate类,继承think\Validate。

2)BaseValidate类有一个goCheck方法,可以调用check方法检测参数是否符合规则。其实就是封装了一下原来的check方法。


对应的validate类

1)新建对应的validate类,继承BaseValidate类。

2)该类有一个固定的protected属性rule。
如果是自定义的规则的话,可以在类里面使用protected function定义一个函数进行指定。

3)还有一个固定的protected属性rule,可以指定错误信息。


Model层

实例化对应的validate类,调用goCheck()方法校验。



一起来看看简单的例子:

BaseValidate类


// 统一验证()方法
public function goCheck(){

	// 1.参数
	$params = input('param.');
        
	// 2.校验参数是否合规
	$result = $this->batch()->check($params);

	// 3.不符合就抛出异常
	if(!$result){
		$e = new ParameterException([
		  'msg'  => $this->error  // 来自于validate类
		]);
		throw $e;
		
	}else{
	  return true;
	}
}


对应的validate类

class AppTokenGet extends BaseValidate
{
	// 字段校验规则
	protected $rule = [
	  'ac' => 'require|isNotEmpty',
	  'se' => 'require|isNotEmpty'
	];

}

控制器文件


$validate = new AppTokenGet ();

$validate->goCheck();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值