<?php
namespace app\index\controller;
//use app\validate\User;
use app\index\facade\User;
use think\Controller;
class Demo9 extends Controller
{
    //1、验证器:使用Validate类中的rule属性
    public function test1()
    {
        //要验证的数据
        $data=[
            'name'=>'yht12345',
            'email'=>'[email protected]',
            'password'=>'123456',
            'mobile'=>'15988889999'
        ];
        //验证器是一个类
//        $validate=new User();
//        if(!$validate->check($data)){
//            return $validate->getError();
//        }
        //使用当前验证器的静态代理
        if(!User::check($data)){
            return User::getError();
        }
        return '验证通过';
    }
//调用控制器中的validate方法进行验证:使用用户自定义的验证器
public function test2()
{
    //$this->validate($data,$validate);返回验证结果
    //要验证数据
    $data=[
        'name'=>'yht12345',
        'email'=>'[email protected]',
        'password'=>'123456',
        'mobile'=>'15988889999'
    ];
    //验证规则
    $validate='app\validate\User';
    $res=$this->validate($data,$validate);

    if($res !== true){
        return $res;
    }
    return '验证通过';
}
}
<?php
//用户信息表的字段验证器类

namespace app\validate;

use think\Validate;
class User extends Validate
{
    //
    protected $rule=[
        'name|姓名'=>[
          'require',
          'max'=>20,
          'min'=>5,
        ],
        'email|邮件'=>[
            'require',
            'email',
        ],
        'password|密码'=>[
            'require',
            'max'=>12,
            'min'=>3,
            'alphaNum',
        ],
        'mobile|手机'=>[
            'require',
            'mobile',
        ],
    ];
}
<?php


namespace app\index\facade;

use think\Facade;
class User extends Facade
{
    protected static function getFacadeClass()
    {
        return 'app\validate\User';
    }
}

利用thinkphp里面的validate类进行验证

/**
 * 验证器总结
 * 1.验证器是一个自定义的类,必须继承于框架的验证类think\Validate.php
 * 2.验证器可以创建在应用application目录下的任何一个可以访问的目录下面
 * 这个访问是指控制器可以访问,并不是指外部的URL访问,只需要指定正确的命名空间
 * 3.验证器其实就是完成框架的think\Validate类中的属性protected $rule=[]初始化
 * 4、在控制器中直接实例代调用check()完成验证
 * 5、还可以创建一个自定义的静态代理,来统一验证方法的调用方式
 */
//2.独立验证:使用的是验证器类think\Validate中的rule方法
//rule()方法实际上就是完成给当前的protected $rule=[]初始化
//独立就是不依赖:不依赖于用户自定义的验证器类:app\validate\User.php
public function test3()
{
    //验证规则
    $rule=[
        'name|姓名'=>[
            'require',
            'max'=>20,
            'min'=>5,
        ],
        'email|邮件'=>[
            'require',
            'email',
        ],
        'password|密码'=>[
            'require',
            'max'=>12,
            'min'=>3,
            'alphaNum',
        ],
        'mobile|手机'=>[
            'require',
            'mobile',
        ],
    ];

    //添加字段的验证规则:初始化rule属性
    Validate::rule($rule);

    //要验证数据
    $data = [
        'name' => 'yht12345',
        'email' => '[email protected]',
        'password' => '123456',
        'mobile' => '15988889999'
    ];
    //如果验证不通过,直接输出错误信息
    if(!Validate::check($data)){
        return Validate::getError();
    }
    return "验证通过";

}
11-22 03:57