ThinkPHP類似AOP思想的參數(shù)驗證的實現(xiàn)方法
思路講解:不管是在開發(fā) API 還是做后臺項目的時候,后端永遠(yuǎn)不要相信前端傳輸?shù)膮?shù),通常要做的是驗證參數(shù)的合法性和安全性。那么在實際項目開發(fā)的時候,怎么簡便的驗證參數(shù)呢。TP 提供了好幾種參數(shù)驗證的方式,比如驗證器,獨立驗證,又或者在繼承 Controller 基類的情況下使用 validate 方法。相比而言,驗證器還是最佳選擇。一個控制器有多個方法,也就表示有多個請求,也就表示有多個場景。一個項目不止一個控制器,那就表示不止需要建立一個驗證器。面向?qū)ο蟮乃枷耄托枰覀兘⒁粋€基類驗證器,然后讓子類繼承就行了。那么怎么實現(xiàn)參數(shù)驗證呢,下面我就介紹下類似 AOP 思想的參數(shù)驗證的實現(xiàn)。
定義驗證器基類
定義基類 app\common\validator\BaseValidator.php
<?php namespace app\common\validator; use app\common\exception\ParamException; use think\Validate; class BaseValidator extends Validate { /** * @param string $scene * @return bool * @throws ParamException */ public function checkParams($scene='') { $params = input('param.'); $res = $this->scene($scene)->check($params); if( ! $res ){ $error = $this->error; if(is_array($error)){ $error = implode(',',$error); } throw new ParamException(['errMsg'=>$error,]); } return $res; } //自定義驗證規(guī)則 }
定義驗證器
<?php namespace app\common\validator\user; use app\common\validator\BaseValidator; class UserValidator extends BaseValidator { protected $rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email', ]; protected $message = [ 'name.require' => '名稱必須', 'name.max' => '名稱最多不能超過25個字符', 'age.number' => '年齡必須是數(shù)字', 'age.between' => '年齡只能在1-120之間', 'email' => '郵箱格式錯誤', ]; protected $scene = [ 'register' => ['name','email'], ]; }
驗證參數(shù)
User.php 控制器 register 方法,實例化驗證器,并進(jìn)行場景驗證。
public function register(Request $request){ $validator = new UserValidator(); $validator->checkParams('register'); . . . }
至此,類似于 AOP 思想的參數(shù)驗證就完成了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
欄 目:PHP編程
下一篇:TP3.2.3框架使用CKeditor編輯器在頁面中上傳圖片的方法分析
本文標(biāo)題:ThinkPHP類似AOP思想的參數(shù)驗證的實現(xiàn)方法
本文地址:http://mengdiqiu.com.cn/a1/PHPbiancheng/11006.html
您可能感興趣的文章


閱讀排行
本欄相關(guān)
- 04-02php本站才可以請求數(shù)據(jù) php本地數(shù)據(jù)庫
- 04-02關(guān)于txt數(shù)據(jù)庫php的信息
- 04-02php打印請求數(shù)據(jù) php打印輸出結(jié)果
- 04-02網(wǎng)頁里php操作數(shù)據(jù)庫 php網(wǎng)頁例子
- 04-02php插入數(shù)據(jù)庫為亂碼 php連接數(shù)據(jù)庫亂
- 04-02php數(shù)據(jù)庫地址 phpstudy 數(shù)據(jù)庫
- 04-02php數(shù)據(jù)庫數(shù)據(jù)相加 php數(shù)據(jù)庫添加數(shù)據(jù)
- 04-02數(shù)據(jù)權(quán)限架構(gòu)思路php 數(shù)據(jù)權(quán)限設(shè)計方
- 04-02php數(shù)據(jù)庫輸入變量 php里輸出數(shù)據(jù)庫數(shù)
- 04-02php如何用導(dǎo)入數(shù)據(jù) php用來導(dǎo)入其他文
隨機閱讀
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05織夢dedecms什么時候用欄目交叉功能?