成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > ThinkPHP5 驗(yàn)證器的具體使用

ThinkPHP5 驗(yàn)證器的具體使用

熱門(mén)標(biāo)簽:拉薩打電話機(jī)器人 寶安400電話辦理 智能外呼電銷(xiāo)系統(tǒng) h5 地圖標(biāo)注 高識(shí)別電銷(xiāo)機(jī)器人 哈爾濱400電話辦理到易號(hào)網(wǎng) 電銷(xiāo)機(jī)器人-快迭智能 合肥外呼系統(tǒng)app 沈陽(yáng)人工智能電銷(xiāo)機(jī)器人公司

前言:

我們?cè)谧鯝PI開(kāi)發(fā)的時(shí)候,我們會(huì)接受客戶(hù)端傳來(lái)的參數(shù),大家都知道這個(gè)參數(shù)是不可信的,我們后端開(kāi)發(fā)人員必須對(duì)這個(gè)參數(shù)進(jìn)行驗(yàn)證。我在之前的開(kāi)發(fā)中只是知道tp5的驗(yàn)證器,并不知道他的用途,因?yàn)橹暗拈_(kāi)發(fā)驗(yàn)證,往往都是基于模型字段進(jìn)行的驗(yàn)證。而驗(yàn)證器更適用與API開(kāi)發(fā),今天就簡(jiǎn)單講下驗(yàn)證器的使用

目錄:

  1. 創(chuàng)建驗(yàn)證器
  2. 書(shū)寫(xiě)單獨(dú)驗(yàn)證器
  3. 調(diào)用驗(yàn)證

1.創(chuàng)建驗(yàn)證器

首先我們需要一個(gè)文件夾來(lái)存放我們的驗(yàn)證器,我們?cè)谀K下創(chuàng)建一個(gè)同控制器平級(jí)的文件夾,取名為validate

然后我們就可以來(lái)建立驗(yàn)證器了,我們只需要?jiǎng)?chuàng)建一個(gè)類(lèi),繼承tp5的validate類(lèi)就可以了。

但是熟悉面向?qū)ο笏枷氲呐笥岩欢ㄖ?,?dāng)我們需要一個(gè)方法每個(gè)驗(yàn)證器都要用到,但是又不去修改tp5的源碼時(shí)。我們就多寫(xiě)一個(gè)類(lèi)來(lái)作為我們的基類(lèi)。所有的驗(yàn)證器都繼承這個(gè)基類(lèi),然后這個(gè)基類(lèi)再去繼承tp5的validate類(lèi)。

這里我們把他取名為baseValidate

那么現(xiàn)在再創(chuàng)建一個(gè)正兒八經(jīng)的驗(yàn)證器了。舉個(gè)例子:

namespace app\index\validate;

use think\Validate;

class User extends Validate
{
  protected $rule = [
    'name' => 'require|max:25',
    'email' => 'email',
  ];

}

再到控制器或者模型中去實(shí)例化再調(diào)用

//虛擬一組數(shù)據(jù),實(shí)際開(kāi)發(fā)中是接受用戶(hù)傳遞的數(shù)據(jù)
$data = [
  'name'=>'thinkphp',
  'email'=>'thinkphp@qq.com'
];

$validate = Loader::validate('User');

if(!$validate->check($data)){
  dump($validate->getError());
}

這樣一個(gè)驗(yàn)證器的應(yīng)用就寫(xiě)好了。我們來(lái)看看有沒(méi)有什么可以簡(jiǎn)化的地方。

  1. 首先需要被驗(yàn)證的數(shù)據(jù)是我們從客戶(hù)端那接受過(guò)來(lái)的那么,第一步接受數(shù)據(jù)
  2. 然后我們要對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證,如果驗(yàn)證不通過(guò),返回錯(cuò)誤信息

這兩部是每次接口被請(qǐng)求都是要做的。那么我們就想把這個(gè)封裝到BaseValidate中去

namespace app\home\validate;
use think\Exception;
use think\Request;
use think\Validate;
class BaseValidate extends Validate
{
  public function goCheck($data='')
  {
    //實(shí)例化請(qǐng)求對(duì)象
    $requestObj=Request::instance();
    //如果傳入為空則獲取請(qǐng)求里的參數(shù)
    empty($data)$data=$requestObj->param();
    if ($this->check($data)) {
      //如果驗(yàn)證通過(guò)了
      return true;
    }else{
      //如果驗(yàn)證沒(méi)通過(guò)
      $error=$this->getError();
      //拋出異常
      throw new Exception($error);
    }
  }
}

這個(gè)goCheck方法封裝好后,有人可能會(huì)問(wèn),這個(gè)驗(yàn)證規(guī)則在哪里呢?

2. 書(shū)寫(xiě)單獨(dú)驗(yàn)證器

之前有說(shuō)過(guò)BaseValidate是用來(lái)被繼承的,那么真正的驗(yàn)證器,我們還沒(méi)有開(kāi)始寫(xiě)。規(guī)則就制定到這個(gè)驗(yàn)證器中。為了更深入的理解,這里舉例子順便使用了自定義驗(yàn)證 規(guī)則。其實(shí)tp寫(xiě)好了的驗(yàn)證規(guī)則應(yīng)該很夠用了

我們就拿最常接受的數(shù)據(jù)來(lái)舉例子,那就是 id 同常這個(gè)id就代表了我們數(shù)據(jù)庫(kù)中某條數(shù)據(jù)的id,這個(gè)id我們往往設(shè)計(jì)為無(wú)符號(hào)自動(dòng)遞增的主鍵,翻譯成人話就是正整數(shù)。那么如果客戶(hù)傳來(lái)的參數(shù)是負(fù)數(shù)或者小數(shù)那么就不應(yīng)該通過(guò)驗(yàn)證。

我們根據(jù)上述需求,我們來(lái)創(chuàng)建一個(gè)驗(yàn)證器。位置還是跟之前的一樣在validate文件夾下

取名為IdMustBePositiveInt.php(名字有點(diǎn)長(zhǎng),不過(guò)好在望文知意)

首先肯定是要繼承我們的基礎(chǔ)驗(yàn)證器

class IdMustBePositiveInt extends BaseValidate

然后制定規(guī)則,為一個(gè)固定的成員變量賦值

  protected $rule = [
  //require是內(nèi)置規(guī)則,而tp5并沒(méi)有正整數(shù)的規(guī)則,所以下面這個(gè)positiveInt使用自定義的規(guī)則
    'id' => 'require|positiveInt'
  ];

那么自定義規(guī)則怎么干呢,其實(shí)也簡(jiǎn)單。定義一個(gè)被保護(hù)的方法

//系統(tǒng)會(huì)自動(dòng)傳入幾個(gè)參數(shù) 第一個(gè)是 要驗(yàn)證的值,第二個(gè)是規(guī)則,自己可以規(guī)定規(guī)則內(nèi)容或者不寫(xiě),第三個(gè)是最初傳入的data。其實(shí)不只這三個(gè)參數(shù),想了解詳細(xì)的可以看看文檔
 protected function positiveInt($value, $rule='', $data)
  {
    if (is_int(($value+0))($value+0)>0) {
      return true;
    }else{
      return 'id必須為正整數(shù)';
    }
  }

?。∽⒁猓哼@里如果判斷失?。悍祷氐牟皇莊alse 返回的是錯(cuò)誤信息。

3. 調(diào)用驗(yàn)證

根據(jù)我們之前的封裝,我們需要達(dá)到的效果就是接受參數(shù),驗(yàn)證參數(shù)一體。那么現(xiàn)在我們?nèi)绾握{(diào)用驗(yàn)證呢

厲害的來(lái)了,我們還是以id為例

 public function test($id)
  {
    //在控制器中直接調(diào)用寫(xiě)上這行代碼就搞定驗(yàn)證了
    (new IdMustBePositiveInt)->goCheck();
  }
  1. 就這樣的一句代碼,直接搞定驗(yàn)證。當(dāng)我們實(shí)例化id驗(yàn)證器,調(diào)用它父類(lèi)的goCheck方法。
  2. goCheck方法會(huì)接受參數(shù),并且將參數(shù)傳入validate對(duì)象上check方法
  3. 就會(huì)去匹配我們?cè)趇d驗(yàn)證器中$rule中規(guī)定的require規(guī)則和我們自定義的規(guī)則。
  4. 如果都通過(guò)就會(huì)返回true
  5. 如果其中一條不匹配則會(huì)拋出異常

這次只舉了id為例子,雖然看上去比直接寫(xiě)?yīng)毩Ⅱ?yàn)證麻煩很多,但是大家仔細(xì)想想,這個(gè)驗(yàn)證規(guī)則其實(shí)在很多地方都是一樣的,比如密碼驗(yàn)證規(guī)則,用戶(hù)名驗(yàn)證規(guī)則等,當(dāng)這個(gè)項(xiàng)目寫(xiě)完了。你已經(jīng)完成了很多驗(yàn)證器。其實(shí)在下個(gè)項(xiàng)目中還可以繼續(xù)套用的哦

TP5驗(yàn)證規(guī)則使用

①靜態(tài)調(diào)用(使用內(nèi)置的規(guī)則驗(yàn)證單個(gè)數(shù)據(jù),返回值為布爾值)

// 日期格式驗(yàn)證
Validate::dateFormat('2016-03-09','Y-m-d'); // true
// 驗(yàn)證是否有效的日期
Validate::is('2016-06-03','date'); // true
// 驗(yàn)證是否有效郵箱地址
Validate::is('thinkphp@qq.com','email'); // true
// 驗(yàn)證是否在某個(gè)范圍
Validate::in('a',['a','b','c']); // true
// 驗(yàn)證是否大于某個(gè)值
Validate::gt(10,8); // true
// 正則驗(yàn)證
Validate::regex(100,'\d+'); // true

②模型驗(yàn)證(在模型中的驗(yàn)證方式)

$User = new User;
$result = $User->validate(
  [
    'name' => 'require|max:25',
    'email'  => 'email',
  ],
  [
    'name.require' => '名稱(chēng)必須',
    'name.max'   => '名稱(chēng)最多不能超過(guò)25個(gè)字符',
    'email'    => '郵箱格式錯(cuò)誤',
  ]
)->save($data);
if(false === $result){
  // 驗(yàn)證失敗 輸出錯(cuò)誤信息
  dump($User->getError());
}

③控制器驗(yàn)證(控制器中進(jìn)行驗(yàn)證)

如果你需要在控制器中進(jìn)行驗(yàn)證,并且繼承了\think\Controller的話,可以調(diào)用控制器類(lèi)提供的validate方法進(jìn)行驗(yàn)證,如下:

$result = $this->validate(
  [
    'name' => 'thinkphp',
    'email' => 'thinkphp@qq.com',
  ],
  [
    'name' => 'require|max:25',
    'email'  => 'email',
  ]);
if(true !== $result){
  // 驗(yàn)證失敗 輸出錯(cuò)誤信息
  dump($result);
}

控制器中的驗(yàn)證代碼可以簡(jiǎn)化為:

$result = $this->validate($data,'User');
if(true !== $result){
  // 驗(yàn)證失敗 輸出錯(cuò)誤信息
  dump($result);
}

如果要使用場(chǎng)景,可以使用:

$result = $this->validate($data,'User.edit');
if(true !== $result){
  // 驗(yàn)證失敗 輸出錯(cuò)誤信息
  dump($result);
}

在validate方法中還支持做一些前置的操作回調(diào),使用方式如下:

$result = $this->validate($data,'User.edit',[],[$this,'some']);
if(true !== $result){
  // 驗(yàn)證失敗 輸出錯(cuò)誤信息
  dump($result);
}

好了,本次tp5驗(yàn)證器的介紹了就寫(xiě)到這里了,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 基于thinkPHP3.2實(shí)現(xiàn)微信接入及查詢(xún)token值的方法
  • Thinkphp5 微信公眾號(hào)token驗(yàn)證不成功的原因及解決方法
  • thinkphp5框架API token身份驗(yàn)證功能示例
  • ThinkPHP5.1表單令牌Token失效問(wèn)題的解決
  • 完美解決thinkphp驗(yàn)證碼出錯(cuò)無(wú)法顯示的方法
  • ThinkPHP驗(yàn)證碼使用簡(jiǎn)明教程
  • ThinkPHP令牌驗(yàn)證實(shí)例
  • thinkPHP實(shí)現(xiàn)表單自動(dòng)驗(yàn)證
  • ThinkPHP表單自動(dòng)驗(yàn)證實(shí)例
  • 詳解ThinkPHP3.2.3驗(yàn)證碼顯示、刷新、校驗(yàn)
  • thinkphp框架使用JWTtoken的方法詳解

標(biāo)簽:林芝 梅州 威海 山東 泰州 巴中 張家口 成都

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ThinkPHP5 驗(yàn)證器的具體使用》,本文關(guān)鍵詞  ThinkPHP5,驗(yàn)證,器,的,具體,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ThinkPHP5 驗(yàn)證器的具體使用》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于ThinkPHP5 驗(yàn)證器的具體使用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    天天影院图片亚洲| 91黄页在线观看| 天天噜天天色| 欧美熟乱第一页| 成人黄色影视| 欧美一区日本一区韩国一区| www.亚洲天堂.com| 亚洲观看高清完整版在线观看| 好吊成人免视频| 国产精一品亚洲二区在线视频| 毛片在线视频| 日韩欧美一级在线| 日韩欧美中文字幕在线播放| 91麻豆精品视频| 亚洲精品久久久久中文字幕欢迎你| 少妇精品视频一区二区免费看| 久久久久久久av| 亚洲人吸女人奶水| 91久久线看在观草草青青| 欧美一区二区在线观看| 成年人网站在线观看免费| 在线播放91灌醉迷j高跟美女| 免费网站在线高清观看| 91成人小视频| 久久av国产紧身裤| 欧美日韩在线视频一区二区三区| 亚洲精品www久久久久久| 日本不卡免费播放| 亚洲欧美久久精品| 成人黄色激情网站| 欧美一级在线亚洲天堂| www.99视频| 麻豆tv在线| 国产一区二区在线免费观看| 欧美18—20岁hd第一次| 69av视频在线播放| 伊人精品一区二区三区| 成人免费观看cn| 香蕉av777xxx色综合一区| 中文字幕视频免费在线观看| 男女无套免费视频网站动漫| 99在线观看视频| 1插菊花综合| 红桃视频 国产| 亚洲午夜女主播在线直播| 国产亚洲欧美日韩一区二区| 日本在线免费看| 久色国产在线| 国产精品自拍在线| 国产亚洲精品久久久网站好莱| 国产精品欧美一区二区三区不卡| 在线观看一二三区| 国产精品久久AV无码| 日本丰满少妇裸体自慰| 精品国产91久久久久久老师| 色综合五月天| 三上悠亚国产精品一区二区三区| 人妻 日韩精品 中文字幕| 在线免费观看中文字幕| 国语精品免费视频| 欧美一区二区三区四区在线观看| 夜夜嗨av色综合久久久综合网| 欧美日韩国产在线观看网站| 综合激情成人伊人| 日韩美女一区二区三区在线观看| 亚洲天堂免费在线| 久草一区二区| 色综合导航网站| ww久久综合久中文字幕| 精品国产欧美日韩不卡在线观看| 欧美日韩和欧美的一区二区| 午夜精品久久久久久久久| 337p粉嫩大胆噜噜噜噜噜91av| 国产毛片精品| 欧美日韩三级视频| 国产免费一区二区三区视频| 黄色在线一区| 成人国产精品一区二区免费麻豆| 亚洲精品.com| 久久亚洲私人国产精品va媚药| 日本激情视频在线观看| 逼特逼视频在线观看| 亚洲女同女同女同女同女同69| 又色又爽又黄视频| 日产电影一区二区三区| 日韩av网站在线播放| 国产精品有限公司| 天天色综合久久| 免费成人av在线播放| 欧美大片在线免费观看| 天堂网www在线观看| 国自在线精品视频| 天堂网在线.www天堂在线视频| 久久久久久亚洲中文字幕无码| www.神马久久| 91麻豆免费在线观看| 91久久伊人青青碰碰婷婷| 国产911在线观看| 日本动漫同人动漫在线观看| 亚洲男女一区二区三区| gogogo高清在线观看免费完整版| 91久久夜色精品国产九色| a'aaa级片在线观看| 7777精品久久久大香线蕉| 日韩在线播放视频| 国产精品夜夜夜爽张柏芝| 亚洲另类欧美日韩| 亚洲成人av一区二区三区| 亚洲国产精品免费在线观看| 欧美 日韩 国产 成人 在线| 日韩欧美成人一区二区三区| 国产精品久久777777换脸| 国产亚洲成av人片在线观看桃| 大香煮伊手机一区| 欧美日韩在线视频免费| 国产精品小说在线| 久久久久国产精品夜夜夜夜夜| 91小视频在线| h视频在线免费观看| 在线观看国产高清视频| 欧美中文字幕在线观看视频| 久久久久无码国产精品一区| 亚洲男同性视频| 久久国产中文字幕| 欧美激情精品久久久久久变态| 最近中文字幕mv第三季歌词| 在线播放色视频| av成人综合| www.黄色小说.com| 欧美丝袜足交| 日韩在线播放中文字幕| 亚洲一区二区三区加勒比| 免费成人av电影| 欧美高清日韩| 精品久久久久久中文字幕人妻最新| 成人毛片18女人毛片| 国产字幕在线看| 国产伦理精品| 日本国产在线播放| 九九在线观看免费视频| 任我爽精品视频在线播放| 一区二区三区视频在线观看免费| 四虎最新网站| 中文字幕在线网| 亚洲精品国产suv一区| 亚洲va欧美va人人爽| av片中文字幕| 波多野结衣加勒比| 多男操一女视频| 国产成人精品网| 欧美日韩另类字幕中文| 国产精品久久久久久久第一福利| 欧美综合在线视频| 亚洲成a人v欧美综合天堂麻豆| 青青草97国产精品免费观看| 色视频在线观看| 亚洲美洲欧洲综合国产一区| 男人操女人的视频在线观看欧美| 成人激情免费电影网址| 2018高清国产日本一道国产| 亚洲三区欧美一区国产二区| 在线免费观看黄| 捆绑裸体绳奴bdsm亚洲| av中文字幕在线不卡| 欧美色欧美亚洲另类二区| 激情av在线播放| 看全色黄大色大片免费久久久| 天天色 色综合| 无码国产精品一区二区高潮| 欧美成人精品一区二区综合免费| 亲爱的老师6电影韩剧| 国产一级视频在线| 色鬼7777久久| 亚洲综合第一页| 一区二区三区在线免费视频| av在线网址观看| 婷婷久久综合九色综合99蜜桃| 国产二区在线播放| 欧美丰满美乳xxx高潮www| 免费一级a毛片夜夜看| 狠狠色狠狠色综合系列| 精品伦精品一区二区三区视频| 欧美xxxx做受欧美88bbw| 国产精品一区久久久久| 欧美白人猛性xxxxx交69| 99视频精品免费观看| 91看片淫黄大片一级在线观看| 国产91丝袜美女在线播放| 国产 日韩 亚洲 欧美| 婷婷视频一区二区三区| 欧美视频日韩视频| 日本人妖一区二区| 三级男人添奶爽爽爽视频| 亚洲毛片网站| 久久91精品久久久久久秒播| 天天躁日日躁aaaa视频| 最近2019免费中文字幕视频三| 国产精品爽爽久久久久久| 国产女主播喷水视频在线观看| 女女同性女同一区二区三区按摩| 日韩精品在线第一页| 91视频在线免费观看| 免费精品视频一区| 日韩在线卡一卡二| 中文字幕高清在线观看| 中文字幕在线日本| 国产99久久久久| 欧美视频亚洲图片| 26uuu日韩精品一区二区| 岳张嘴把我的精子吞下去| 99久久99久久精品国产片桃花| 国产在线一区二区| 欧美一区二区黄色| 男人舔女人下面高潮视频| 免费黄色三级网站| 国产极品jizzhd欧美| 日韩欧美精品在线不卡| 日本一本高清视频| 国产三级精品三级在线观看| 成人免费图片免费观看| 国产在线视频欧美一区二区三区| 91精品综合久久久久久| 4hu永久免费入口| 亚洲国产小视频在线观看| 日本成人黄色免费看| 亚洲欧洲偷拍精品| 欧美老年两性高潮| 英国三级经典在线观看| 久久久激情视频| 国产精品国产a级| 欧美少妇在线观看| 国产精品视频一区二区三区经| 欧美第一区第二区| 免费99热在线观看| 久久午夜a级毛片| 亚洲国产网址| 美女看a上一区| 国产美女精品视频免费观看| 色综合999| 羞羞影院欧美| 青青草免费在线视频观看| 九九热这里只有精品6| 无码少妇精品一区二区免费动态| 隔壁老王国产在线精品| 2020国产在线视频| 国产999精品久久| 免费高清视频精品| 久久精彩视频| 欧美性猛交xxxxx水多| 免费av福利| 99视频国产精品免费观看| 婷婷中文字幕在线观看| 激情亚洲网站| 免费精品国产自产拍在| 欧美大片第1页| 亚洲国产精品毛片av不卡在线| 中文xxx视频| 91麻豆精品| 91福利精品视频| 成人av动漫在线观看| 欧美成人禁片在线观看网址| 综合一区中文字幕| 久久在线免费观看视频| 美女免费免费看网站| 亚洲午夜久久久久久久久| 中文字幕av一区二区三区人妻少妇| 久久综合给合久久狠狠色| 波多野结衣一区| 亚洲自拍偷拍色片视频| 激情aⅴ欧美一区二区欲海潮| 91小仙女jk白丝袜呻吟| 91捆绑美女网站| 在线观看电影av| 国产精品a级| 草草影院第一页| 在线观看一区二区视频| 日韩av电影免费观看高清完整版| www.99.热| 亚洲激情av在线| 欧美怡红院视频| 日韩二区三区在线| 99久久久无码国产精品免费蜜柚| 日本一区二区高清不卡| 最近日本中文字幕| 国产综合色精品一区二区三区| 亚洲精选中文字幕| 日本在线电影一区二区三区| 成人欧美精品久久久久影院| 俄罗斯xxxx性全过程| av中文一区二区三区| 一区国产精品| 你懂的好爽在线观看| 国产精品伦一区二区| 国产高清免费av在线| 天天干天天操天天操| 亚洲精品国产精品国自| 中文成人av在线| 亚洲视频精品在线观看| 国产又大又黑又粗免费视频| a网站在线观看| 偷拍国模大尺度视频在线播放| 久久悠悠精品综合网| 91精品国产91久久久久久一区二区| 国产伦精品一区二区三区四区视频_| 亚洲欧洲闷骚av少妇影院| xvideos国产精品| youjizz亚洲| 久久wwww| 国产激情第一页| 另类少妇人与禽zozz0性伦| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲欧美另类小说视频| 欧美做受高潮中文字幕| www.在线观看av| 中日韩免费毛片| gay欧美网站| 欧美黄网站色视频| 激情伊人五月天| 久久久久久网| 真人抽搐一进一出视频| 久久久久久亚洲精品杨幂换脸| 国产精品99精品| 亚洲国产欧美一区二区三区不卡| 欧美激情在线精品一区二区三区| 国产成人在线综合| 午夜伦理在线视频| 国产黄色片av| 久热在线视频|