1.创建User验证器(继承validate验证类);
2.创建User验证器的静态代理类;
3.验证方法调用:验证器验证和独立验证;
User验证器
<?php
namespace app\validate;
use think\Validate;
//User验证器
class User extends Validate
{
protected $rule = [
'name'=>[
'require',
'min'=>5,
'max'=>10,
],
'email'=>[
'require',
'email'=>'email',
],
'password'=>[
'require',
'min'=>6,
'max'=>20,
],
'mobile'=>[
'require',
'mobile'=>'mobile',
]
];
}
User验证器的静态代理类
<?php
namespace app\facade;
use think\Facade;
class User extends Facade
{
protected static function getFacadeClass()
{
return '\app\validate\User';
}
}
验证方法调用
<?php
namespace app\index\controller;
/*
* 验证器总结
* 1.验证器是一个自定义的类,必须继承于框架的验证类think\validate.php
* 2.验证器可以创建在应用app目录下的任何一个可以访问的目录下面,这个访问是指控制器可以访问,并不是外部的URL访问,只需要指定正确的命名空间
* 3.验证器就是完成框架的think\validate类的属性protected $rule=[]初始化
* 4.在控制器中直接实例化调用 check()完成验证
* 5.还可以创建一个自定义的静态代理,来统一验证方法的调用方式
*/
use think\Controller;
//use app\validate\User;
//引入User验证器的静态代理
use app\facade\User;
class Demo9 extends Controller
{
//一、验证器验证
//方法1:调用验证器类,User是validate的实现。
public function test1()
{
//要验证的数据
$data = [
'name' => 'mahairen',
'email' => 'nx99@qq.com',
'password' => '123abc',
'mobile' => '13909511163',
];
$validate = new \app\validate\User();
//调用验证器的check方法来验证数据
if (!$validate->check($data)){
return $validate->getError();
}
return '验证通过';
}
//方法2:使用静态代理User验证器,不用实例化了
public function test2()
{
//要验证的数据
$data = [
'name' => 'mahairen',
'email' => 'nx99@qq.com',
'password' => '123abc',
'mobile' => '13909511163',
];
if (!User::check($data)) {
return User::getError();
}
return '验证通过';
}
//方法3:(最常用)调用控制器中的validate方法进行验证:使用用户自定义的验证器/类
public function test3()
{
//要验证的数据
$data = [
'name' => 'mahairen',
'email' => 'nx99@qq.com',
'password' => '123abc',
'mobile' => '13909511163',
];
//验证规则
$validate = 'app\validate\User';
$res = $this->validate($data,$validate);
if (true !== $res){
return $res;
}
return '验证通过';
}
//二.独立验证:使用validate类的rule属性
//rule()方法实际上就是完成给当前类的protected $rule = []初始化
public function test4()
{
//创建验证规则
$rule = [
'name'=>[
'require',
'min'=>5,
'max'=>10,
],
'email'=>[
'require',
'email'=>'email',
],
'password'=>[
'require',
'min'=>6,
'max'=>20,
],
'mobile'=>[
'require',
'mobile'=>'mobile',
]
];
//要验证的数据
$data = [
'name' => 'mahairen',
'email' => 'nx99@qq.com',
'password' => '123abc',
'mobile' => '13909511163',
];
//添加字段的验证规则,初始化rule属性
validate::rule($rule);
//校验数据,如果验证不通过,直接输出错误信息
if (!validate::check($data)){
return validate::getError();
}
return '验证通过';
}
}