博客列表 >thinkPHP5.1中的验证和独立验证

thinkPHP5.1中的验证和独立验证

Pengsir
Pengsir原创
2018年01月24日 19:23:031660浏览

用户自定义验证类User:

<?php
/**
 * 验证规则,就是一个类
 */

namespace app\common;

use think\Validate;

class User extends Validate
{
    //系统框架里的Validate的验证规则
    //当前验证规则
    protected $rule = [
            'name|姓名'=>[
                'require'=>'require',//必填,不能为空
                'min'=>3,//最小为3位
                'max'=>10,//最大为10位
            ],
        'email|邮箱'=>[
            'require'=>'require',
            'email'=>'email'
        ],
        'mobile|手机'=>[
            'require'=>'require',
            'mobile'=>'mobile'
        ],
        'password|密码'=>[
            'require'=>'require',
           'min'=>6,
            'max'=>12,
            'alphaNum'=>'alphaNum'//仅允许字母+数字
        ]
    ];
}

静态代理User类:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/1/24 0024
 * Time: 17:37
 */

namespace app\facade;


use think\Facade;

class User extends Facade
{
    //第二种方式  用静态代理调用
        //获取当前Facade对应类名
    protected static function getFacadeClass()
    {
        return 'app\common\User';
    }
}

控制器下Demo9代码:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/1/23 0023
 * Time: 21:44
 */

namespace app\index\controller;


use think\Controller;
use app\common\User;
//use app\facade\User;//导入静态代理类

use think\facade\Validate;

class Demo9 extends Controller
{
    //第一种方法
    public function test1(){
        //要验证的数据
        $data = [
            'name'=>'peng',
            'email'=>'peng@qq.com',
            'mobile'=>'18871587950',
            'password'=>'123abc'
        ];
        //创建User这个类的实例
        $validate = new User();

         if(!$validate->check($data)){
             return $validate->getError();
         }
             return '验证通过';
         }
         //第二种方法,用静态代理调用
         public function test2(){
             //要验证的数据
             $data = [
                 'name'=>'peng',
                 'email'=>'peng@qq.com',
                 'mobile'=>'18871587950',
                 'password'=>'123abc'
             ];
             if(!User::check($data)){
                 return User::getError();
             }
             return '验证通过';
         }
         //第三种方法,在控制中调用,因为控制中有验证数据的方法
            public function test3(){
                //3.1要验证的数据
                $data = [
                    'name'=>'peng',
                    'email'=>'peng@qq.com',
                    'mobile'=>'18871587950',
                    'password'=>'123abc'
                ];
                    //3.2 验证器名
                $validate = 'app\common\User';

                //3.3 验证方法
               // protected function validate($data, $validate)
                $res = $this->validate($data, $validate);
                if($res!==true){
                    return $res;
                }
                    return '验证通过';
                }
        /*
         * 验证总结:
         * 1.验证器是一个自定义的类,必须继承框架的验证类think\Validate.php
         * 2.验证器可以创建在应用application目录下的任何一个可以访问的目录下面
         *    这个访问是指控制器可以访问,并不是指外部的URL访问,只需要指定正确的命名空间
         * 3.验证器其实就是完成框架的think\Validate类中的属性protected $rule=[] 初始化
         * 4.在控制器中直接实例化调用check()完成验证
         * 5.还可以创建一个自定义的静态代理,来统一验证方法的调用方式
         */


        /*
         * 独立验证总结:
         *  原理:就是单独用Validate这个类调用自己的非静态方法check($data,$rule)
         * 1.把这个类变成静态的,就要引入use think\facade\Validate;facade\Validate里的方法把Validate类,类似转为静态
         * 2.Validate类调check($data,$rule)
         */
    //        2.独立验证:使用的是验证器类的think\Validate中的rule()方法
            //rule()方法实际上就是完成给当前类的protected $rule =[]初始化
            //独立验证就是不依赖于用户自定义的验证器类:app\common\User.php
        public function test4(){
            /*
             * 这只是添加字段的验证规则
             *string|array  $name  字段名称或者规则数组
             *$rule  验证规则或者字段描述信息
             * public function rule($name, $rule = '')
             */
            //4.1要验证的数据
            $data = [
                'name'=>'peng',
                'email'=>'peng@qq.com',
                'mobile'=>'18871587950',
                'password'=>'123abc'
            ];

            $rule = [
                'name|姓名'=>[
                    'require'=>'require',//必填,不能为空
                    'min'=>3,//最小为3位
                    'max'=>10,//最大为10位
                ],
                'email|邮箱'=>[
                    'require'=>'require',
                    'email'=>'email'
                ],
                'mobile|手机'=>[
                    'require'=>'require',
                    'mobile'=>'mobile'
                ],
                'password|密码'=>[
                    'require'=>'require',
                    'min'=>6,
                    'max'=>12,
                    'alphaNum'=>'alphaNum'//仅允许字母+数字
                ]
            ];
            //添加字段的验证规则:初始化rule属性
            Validate::rule($rule);

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


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议