用戶自定義驗(yàn)證類User:
<?php /** * 驗(yàn)證規(guī)則,就是一個類 */ namespace app\common; use think\Validate; class User extends Validate { //系統(tǒng)框架里的Validate的驗(yàn)證規(guī)則 //當(dāng)前驗(yàn)證規(guī)則 protected $rule = [ 'name|姓名'=>[ 'require'=>'require',//必填,不能為空 'min'=>3,//最小為3位 'max'=>10,//最大為10位 ], 'email|郵箱'=>[ 'require'=>'require', 'email'=>'email' ], 'mobile|手機(jī)'=>[ 'require'=>'require', 'mobile'=>'mobile' ], 'password|密碼'=>[ 'require'=>'require', 'min'=>6, 'max'=>12, 'alphaNum'=>'alphaNum'//僅允許字母+數(shù)字 ] ]; }
靜態(tài)代理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 { //第二種方式 用靜態(tài)代理調(diào)用 //獲取當(dāng)前Facade對應(yīng)類名 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;//導(dǎo)入靜態(tài)代理類 use think\facade\Validate; class Demo9 extends Controller { //第一種方法 public function test1(){ //要驗(yàn)證的數(shù)據(jù) $data = [ 'name'=>'peng', 'email'=>'peng@qq.com', 'mobile'=>'18871587950', 'password'=>'123abc' ]; //創(chuàng)建User這個類的實(shí)例 $validate = new User(); if(!$validate->check($data)){ return $validate->getError(); } return '驗(yàn)證通過'; } //第二種方法,用靜態(tài)代理調(diào)用 public function test2(){ //要驗(yàn)證的數(shù)據(jù) $data = [ 'name'=>'peng', 'email'=>'peng@qq.com', 'mobile'=>'18871587950', 'password'=>'123abc' ]; if(!User::check($data)){ return User::getError(); } return '驗(yàn)證通過'; } //第三種方法,在控制中調(diào)用,因?yàn)榭刂浦杏序?yàn)證數(shù)據(jù)的方法 public function test3(){ //3.1要驗(yàn)證的數(shù)據(jù) $data = [ 'name'=>'peng', 'email'=>'peng@qq.com', 'mobile'=>'18871587950', 'password'=>'123abc' ]; //3.2 驗(yàn)證器名 $validate = 'app\common\User'; //3.3 驗(yàn)證方法 // protected function validate($data, $validate) $res = $this->validate($data, $validate); if($res!==true){ return $res; } return '驗(yàn)證通過'; } /* * 驗(yàn)證總結(jié): * 1.驗(yàn)證器是一個自定義的類,必須繼承框架的驗(yàn)證類think\Validate.php * 2.驗(yàn)證器可以創(chuàng)建在應(yīng)用application目錄下的任何一個可以訪問的目錄下面 * 這個訪問是指控制器可以訪問,并不是指外部的URL訪問,只需要指定正確的命名空間 * 3.驗(yàn)證器其實(shí)就是完成框架的think\Validate類中的屬性protected $rule=[] 初始化 * 4.在控制器中直接實(shí)例化調(diào)用check()完成驗(yàn)證 * 5.還可以創(chuàng)建一個自定義的靜態(tài)代理,來統(tǒng)一驗(yàn)證方法的調(diào)用方式 */ /* * 獨(dú)立驗(yàn)證總結(jié): * 原理:就是單獨(dú)用Validate這個類調(diào)用自己的非靜態(tài)方法check($data,$rule) * 1.把這個類變成靜態(tài)的,就要引入use think\facade\Validate;facade\Validate里的方法把Validate類,類似轉(zhuǎn)為靜態(tài) * 2.Validate類調(diào)check($data,$rule) */ // 2.獨(dú)立驗(yàn)證:使用的是驗(yàn)證器類的think\Validate中的rule()方法 //rule()方法實(shí)際上就是完成給當(dāng)前類的protected $rule =[]初始化 //獨(dú)立驗(yàn)證就是不依賴于用戶自定義的驗(yàn)證器類:app\common\User.php public function test4(){ /* * 這只是添加字段的驗(yàn)證規(guī)則 *string|array $name 字段名稱或者規(guī)則數(shù)組 *$rule 驗(yàn)證規(guī)則或者字段描述信息 * public function rule($name, $rule = '') */ //4.1要驗(yàn)證的數(shù)據(jù) $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|手機(jī)'=>[ 'require'=>'require', 'mobile'=>'mobile' ], 'password|密碼'=>[ 'require'=>'require', 'min'=>6, 'max'=>12, 'alphaNum'=>'alphaNum'//僅允許字母+數(shù)字 ] ]; //添加字段的驗(yàn)證規(guī)則:初始化rule屬性 Validate::rule($rule); if(!Validate::check($data)){ return Validate::getError(); } return '驗(yàn)證通過'; } }
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號