THINKPHP5.1验证器

本文介绍ThinkPHP中两种验证方式的应用实例,包括不使用静态代理的验证器、使用静态代理的验证器及直接通过Controller进行验证的方法。

THINKPHP有两种验证,一种叫验证器一种叫独立验证

先记一下验证器\类

在application下创建一个validate文件夹,在validate文件夹中放我们自定义的验证器,创建一个User验证器

1、不使用静态代理的验证器

文件application\validate\User.php,自定义的验证器类

<?php
/**
 * Created by PhpStorm.
 * User: 10475
 * Date: 2018/9/2
 * Time: 21:44
 */
// 用户信息表的字段验证器\类
namespace app\validate;

use think\Validate;
// 用户自定义的验证器需要继承框架的验证器才能使用
class user extends Validate
{
    // 当前验证规则使用了Validate类中的rule方法
    protected $rule = [
        'name|姓名' => [
            'require'   => 'require',
            'min'       => 5,
            'max'       => 20,
        ],
        'email|邮箱'    => [
            'require'   => 'require',
            'email'     => 'email',
        ],
        'password|密码' => [
            'require'   => 'require', //必须的
            'min'       => 3,         //最小3位
            'max'       => 12,        //最大12位
            'alphaNum'  => 'alphaNum',//仅允许字母加数字alphaNum
        ],
        'mobile|手机'   => [
            'require'   => 'require',
            'mobile'    => 'mobile',
        ],
    ];
}

文件application\demo\controller\Demo9.php,使用了验证器的控制器

<?php
/**
 * Created by PhpStorm.
 * User: 10475
 * Date: 2018/9/2
 * Time: 21:38
 */

namespace app\demo\controller;
use app\validate\User;//引入用户自定义的验证器
use think\Controller;
class Demo9 extends Controller
{
    public function test1()
    {
        // 模拟要验证的数据
        $data = [
            'name'=>'Peter',
            'email'=>'peter@php.cn',
            'password'=>'123abc',
            'mobile'=>'18966775522'
        ];
        
        $validate = new User();
        if (!$validate->check($data)){
            return $validate->getError();
        }
        return '验证通过';
    }
}

2、使用静态代理的验证器:


验证器还是不变,用的文章上面的验证器

需要加一个静态代理类:application\facade\User.php,用来代理User验证器

<?php
/**
 * Created by PhpStorm.
 * User: 10475
 * Date: 2018/9/2
 * Time: 22:04
 */

namespace app\facade;
// 继承框架的Facade类,我们自定义的静态代理才能使用Facade类中的方法
class User extends \think\Facade
{
    public static function getFacadeClass()
    {
        // 返回代理的类
        return 'app\validate\User';
    }
}

控制器:application\demo\controller\Demo91.php

<?php
/**
 * Created by PhpStorm.
 * User: 10475
 * Date: 2018/9/2
 * Time: 21:38
 */

namespace app\demo\controller;
// 引入静态代理的验证器类
use app\facade\User;
use think\Controller;
class Demo91 extends Controller
{
    public function test1()
    {
        // 模拟要验证的数据
        $data = [
            'name'=>'Peter',
            'email'=>'peterphp.cn',
            'password'=>'123abc',
            'mobile'=>'18966775522'
        ];

        if (!User::check($data)){
            return User::getError();
        }
        return '验证通过';
    }
}

3、仅通过Controller类中的validate方法进行验证 

验证器还是不变,变的只是如何在控制器中进行验证

控制器:

<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
    public function test2()
    {
        // 模拟要验证的数据
        $data = [
            'username'=>'Chenjiankang',
            'password'=>'abc123',
            'email'=>'1047588430@qq.com',
            'mobile'=>'13355555555'
        ];
        // validate方法最少接受两个参数,一个是要验证的数据,一个是用来验证的规则
        $res = $this->validate($data,'app\validate\User');
        if(true!==$res){
            // 错误信息可以直接返回validate方法就行了
            return $res;
        }
        return '验证通过,这是test2的方法';
    }
}

还有一篇很好的文章,记一下等用得着再看https://blog.youkuaiyun.com/dancheng1/article/details/78886931

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值