亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

EasySwoole 驗(yàn)證器組件

EasySwoole 提供了獨(dú)立的 驗(yàn)證器組件,幾行代碼即可實(shí)現(xiàn)對請求參數(shù)進(jìn)行驗(yàn)證。常用于對 HTTP 等請求中的請求參數(shù)的驗(yàn)證。

驗(yàn)證器 Validate 組件當(dāng)前最新版本為 2.0.0,相比舊版本 1.3.0 及之前版本支持了更強(qiáng)的驗(yàn)證規(guī)則,也允許用戶使用更多的自定義操作,更加方便用戶對請求參數(shù)進(jìn)行驗(yàn)證。關(guān)于組件舊版本 1.3.0 及更早版本的使用文檔請查看 Validate 1.3.x 文檔

另外框架還提供了在注解中對 HTTP 請求參數(shù)進(jìn)行校驗(yàn)的組件,可以很方便地對 HTTP 請求參數(shù)的合法性進(jìn)行校驗(yàn)。在注解中就可以設(shè)置請求參數(shù)的驗(yàn)證規(guī)則,使得代碼更簡潔,詳細(xì)使用見 參數(shù)注解校驗(yàn)

組件要求

  • php: >= 7.1.0
  • easyswoole/spl: ^1.0
  • psr/http-message: ^1.0
  • ext-json: *
  • ext-mbstring: *

安裝方法

框架 3.4.x 及以上版本自帶 validate 組件,所以不需要單獨(dú)安裝。3.4.x 之前的版本請單獨(dú)安裝,安裝方法如下:

composer require easyswoole/validate

倉庫地址

easyswoole/validate

基本使用

普通驗(yàn)證

支持的驗(yàn)證方法

普通驗(yàn)證支持的驗(yàn)證方法有如下:activeUrlallDigitalallowFileallowFileTypealphaalphaDashalphaNumbetweenbetweenLenbooldateAfterdateBeforedecimaldifferentdifferentWithColumnequalequalWithColumnfloatfuncgreaterThanWithColumninArrayintegerisArrayisIplengthlengthMaxlengthMinlessThanWithColumnmaxminurlmoneynotEmptynotInArraynumericoptionalregexrequiredtimestampAftertimestampAfterDatetimestampBeforetimestampBeforeDateurl

驗(yàn)證方法的具體使用可查看 方法列表

使用組件提供的默認(rèn)的驗(yàn)證錯誤信息提示

validate 驗(yàn)證器提供了默認(rèn)驗(yàn)證錯誤信息的規(guī)則,點(diǎn)擊查看 默認(rèn)驗(yàn)證錯誤信息的規(guī)則

使用示例如下:

<?php
require_once __DIR__ . "/vendor/autoload.php";

// 要驗(yàn)證的數(shù)據(jù)
$data = [
    'name' => 'easyswoole',
    'age' => 19
];

// 初始化驗(yàn)證器對象
$validate = new \EasySwoole\Validate\Validate();

// 給字段加上驗(yàn)證規(guī)則 (驗(yàn)證數(shù)據(jù)中 name 字段不能沒有)
$validate->addColumn('name')->required();

// 給字段加上驗(yàn)證規(guī)則 (驗(yàn)證數(shù)據(jù)中 age 字段不能沒有且值不能大于18)
$validate->addColumn('age')->required()->max(18);

// 驗(yàn)證結(jié)果:驗(yàn)證通過返回 true 反之返回 false
$bool = $validate->validate($data);
if ($bool) {
    var_dump("驗(yàn)證通過");
} else {
    var_dump($validate->getError()->__toString());
}
/*
 * 輸出結(jié)果:string(23) "age的值不能大于18"
 */

注意:驗(yàn)證器組件的驗(yàn)證順序是按照添加驗(yàn)證規(guī)則時的 添加字段的先后順序驗(yàn)證規(guī)則的先后順序 逐個進(jìn)行驗(yàn)證的,先添加的驗(yàn)證規(guī)則不通過則直接返回驗(yàn)證失敗,然后就可以獲取對應(yīng)的驗(yàn)證錯誤信息。例如上述示例中,會優(yōu)先驗(yàn)證 name 字段是否存在。下面示例也是一樣的原理。

使用自定義的驗(yàn)證錯誤信息提示

使用示例如下:

<?php
require_once __DIR__ . "/vendor/autoload.php";

// 要驗(yàn)證的數(shù)據(jù)
$data = [
    'name' => 'easyswoole',
    'age' => 16
];

// 初始化驗(yàn)證器對象
$validate = new \EasySwoole\Validate\Validate();

// 給字段加上驗(yàn)證規(guī)則 (驗(yàn)證數(shù)據(jù)中 name 字段不能沒有)
$validate->addColumn('name')->required('名字不為空');

// 給字段加上驗(yàn)證規(guī)則
$validate->addColumn('age')->required('年齡不為空')->func(function ($itemData, $column, \EasySwoole\Validate\Validate $validate) {

    // 獲取要驗(yàn)證的數(shù)據(jù),為 1 個 \EasySwoole\Spl\SplArray 對象
    var_dump($validate->getVerifyData());

    // 判斷要驗(yàn)證的數(shù)據(jù)是否屬于 \EasySwoole\Spl\SplArray
    var_dump($validate->getVerifyData() instanceof \EasySwoole\Spl\SplArray);

    // 獲取驗(yàn)證的字段名,為 'age',即 addColumn() 中設(shè)置的字段名
    var_dump($column);

    // 獲取驗(yàn)證的字段名的值,為 18
    var_dump($itemData);

    return ($validate->getVerifyData() instanceof \EasySwoole\Spl\SplArray) && $column === 'age' && $itemData === 0.001;
}, '只允許18歲的進(jìn)入');

// 驗(yàn)證結(jié)果:驗(yàn)證通過返回 true 反之返回 false
$bool = $validate->validate($data);
if ($bool) {
    var_dump("驗(yàn)證通過");
} else {
    var_dump($validate->getError()->__toString());
}
/*
 * 輸出結(jié)果:string(23) "只允許18歲的進(jìn)入"
 */

自定義驗(yàn)證

使用自定義驗(yàn)證器類的自定義驗(yàn)證規(guī)則

使用示例如下:

<?php
require_once __DIR__ . "/vendor/autoload.php";

class CustomValidator extends \EasySwoole\Validate\Functions\AbstractValidateFunction
{
    /**
     * 返回當(dāng)前校驗(yàn)規(guī)則的名字
     */
    public function name(): string
    {
        return 'mobile';
    }

    /**
     * 驗(yàn)證失敗返回 false,或者用戶可以拋出異常,驗(yàn)證成功返回 true
     * @param $itemData
     * @param $arg
     * @param $column
     * @return bool
     */
    public function validate($itemData, $arg, $column, \EasySwoole\Validate\Validate $validate): bool
    {
        $regular = '/^((13[0-9])|(14[5,7,9])|(15[^4])|(18[0-9])|(17[0,1,3,5,6,7,8]))\\d{8}$/';
        if (!preg_match($regular, $itemData)) {
            return false;
        }

        return true;
    }
}

// 待驗(yàn)證數(shù)據(jù)
$data = [
    'mobile' => '12312345678'
];

$validate = new \EasySwoole\Validate\Validate();

// 先添加 function 第一個參數(shù)為類,第二個參數(shù)設(shè)置是否覆蓋 (當(dāng)存在相同名字的驗(yàn)證規(guī)則,傳參數(shù) true 會替換掉前面設(shè)置的同名的驗(yàn)證規(guī)則)
$validate->addFunction(new CustomValidator(), false);

// 自定義錯誤消息示例
$validate->addColumn('mobile')->required('手機(jī)號不能為空')->callUserRule(new CustomValidator(), '手機(jī)號格式不正確');

// 驗(yàn)證結(jié)果
$bool = $validate->validate($data);
if ($bool) {
    var_dump("驗(yàn)證通過");
} else {
    var_dump($validate->getError()->__toString());
}
/*
 * 輸出結(jié)果:string(24) "手機(jī)號格式不正確"
 */

特殊驗(yàn)證

使用帶 * 號的匹配規(guī)則進(jìn)行驗(yàn)證

使用示例如下:

<?php
require_once __DIR__ . "/vendor/autoload.php";

$validate = new \EasySwoole\Validate\Validate();

// * 可以放在任意位置 且有多個
$validate->addColumn('*.a')->required()->notEmpty()->between(1, 10);

// 驗(yàn)證結(jié)果
$bool = $validate->validate([
    'a' => ['a' => 1],
    'b' => ['a' => 11]
]);
if ($bool) {
    var_dump("驗(yàn)證通過");
} else {
    var_dump($validate->getError()->__toString());
}
/*
 * 輸出結(jié)果:*.a只能在 1 - 10 之間
 */

快速驗(yàn)證

我們還提供了數(shù)組快速驗(yàn)證方式。

函數(shù)原型:EasySwoole\Validate\Validate::make():

參數(shù):

  • $rules 驗(yàn)證規(guī)則.
  • $message 自定義錯誤信息.
  • $alias 字段別名.

返回值:

  • \EasySwoole\Validate\Validate::class實(shí)例.

使用示例如下:

<?php
require_once __DIR__ . "/vendor/autoload.php";

// 驗(yàn)證規(guī)則
$rules = [
    'name' => 'required|notEmpty',
    'age' => 'required|integer|between:20,30',
    'weight' => 'required|max:50'
];

// 驗(yàn)證錯誤消息提示
$messages = [
    'name.required' => '名字不能為空!',
    'age' => '年齡輸入有誤!',
    'weight.max' => '體重最大不能超過50!'
];

// 驗(yàn)證字段的別名
$alias = [
    'name' => '名字',
    'age' => '年齡',
    'weight' => '體重'
];

// 組裝快速驗(yàn)證
$validate = \EasySwoole\Validate\Validate::make($rules, $messages, $alias);

// 驗(yàn)證結(jié)果
$bool = $validate->validate([
    'name' => '史迪仔',
    'age' => 20,
    'weight' => 70
]);
if ($bool) {
    var_dump("驗(yàn)證通過");
} else {
    var_dump($validate->getError()->__toString());
}
/*
 * 輸出結(jié)果:weight的值不能大于'50'
 */

暫不支持 inArraynotInArrayfunccallUserRuleallowFileallowFileType 等規(guī)則。

其他的具體的驗(yàn)證規(guī)則,可查看 驗(yàn)證規(guī)則列表

亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    日韩午夜免费视频| 亚洲人成网站在线观看播放| 在线观看一区欧美| 国产精品mm| 99视频精品| 91视频婷婷| 日本精品一区二区| 国产综合色产| 亚洲欧美不卡| 久久99影院| 欧美影视一区| 国产偷久久久精品专区| 福利视频久久| 一区二区三区偷拍| 国产精品久久亚洲7777| 久久精品日产第一区二区三区精品版| 日韩欧美在线一区二区| 亚洲美女一区| 玛丽玛丽电影原版免费观看1977| 欧美日韩午夜| 国产精品久久久久久久久久直播| 一区二区三区四区视频在线观看 | 在线观看成人一级片| 亚洲激情国产| 国产精品xxx在线观看www| 亚洲欧洲一区二区福利| 国产久一道中文一区| 五月婷婷综合色| 久久成人资源| 欧美国产专区| 国外成人在线视频网站| 亚洲国产欧洲综合997久久| 久久精品日韩| 嫩草成人www欧美| 中文字幕一区二区三区乱码| 99热99热| 亚洲激情社区| 欧美日本韩国在线| 亚洲一区精品视频| 欧美三级黄美女| 精品一区二区三区免费毛片| 国产精品一区毛片| 欧美日韩一区二区三区四区在线观看 | 在线视频精品一区| 亚洲激情啪啪| 国内视频一区| 美女视频一区免费观看| 国产在线欧美日韩| 日韩三级电影| 久久久久久久久久码影片| 亚洲欧美日韩一区在线观看| 精品动漫3d一区二区三区免费| 日韩精品国内| 狠狠干一区二区| 999视频在线观看| 国产亚洲精品v| 国产精品sss| 欧美黄污视频| 一区二区三区三区在线| 欧美亚洲精品日韩| 精品欧美一区二区三区久久久| 蘑菇福利视频一区播放| 一区二区精品在线| 在线亚洲免费| 亚洲免费播放| av不卡在线看| 日韩亚洲欧美精品| 最新国产乱人伦偷精品免费网站| 欧美日韩高清免费| 欧美黄色精品| 国内精品久久国产| 欧美日韩一区二区视频在线观看 | 91文字幕巨乱亚洲香蕉| 性久久久久久| 91九色对白| 操人视频欧美| 国产日韩久久| 精品国产乱码久久久久软件 | 波多野结衣久草一区| 久久亚洲风情| 久久人人97超碰国产公开结果| 国产欧美一级| 国产伦精品一区二区三区视频孕妇| 精品成人在线| 欧美亚洲一区二区三区| 超碰97在线资源| 久热这里只精品99re8久| 欧美二区在线| 亚洲视频精品一区| 伊人久久成人| 国产精品制服诱惑| 午夜精品免费| 亚洲区一区二区三区| 国产免费一区| 午夜精品网站| 99中文字幕| 亚洲日本激情| 一区二区精品在线观看| 国产传媒一区| 国产毛片一区| 国产精品多人| 亚洲 国产 日韩 综合一区| 麻豆91精品| 一区二区日韩免费看| 致1999电视剧免费观看策驰影院| 国产精品日韩欧美一区二区三区 | 在线欧美一区| 一区二区三区|亚洲午夜| 国产一区二区三区四区五区在线 | 亚洲人成在线影院| 制服国产精品| 午夜老司机精品| 国产日韩精品久久| 久久精品中文| 国产欧美丝祙| 亚洲精品中文字幕在线| 欧美日韩综合精品| 欧美一区成人| 日韩三级电影| 色阁综合av| 性欧美.com| 亚洲色图自拍| 中文字幕欧美日韩一区二区三区 | 豆国产97在线| 成人h视频在线观看| 亚洲一区精品视频| 亚洲欧美日韩精品在线| 久久不射中文字幕| 亚洲女优在线| 久久青青草原一区二区| 久久综合九色综合久99| 超碰97国产在线| 国产精品日韩欧美一区二区三区 | 欧美.www| 欧美不卡一区| 欧美性色综合| 亚洲高清免费| 99pao成人国产永久免费视频| 一区二区视频欧美| 一本色道婷婷久久欧美| 亚洲欧美日韩一区在线观看| 久久久久久久欧美精品| 成人av网站观看| 国产日韩欧美精品| 欧美亚洲另类在线一区二区三区| 欧美一区二区三区四区五区六区| 日韩成人在线资源| 欧美88av| 国产日韩三区| 99久久精品免费看国产一区二区三区| 成人动漫视频在线观看完整版| 好吊色欧美一区二区三区| 日本一区二区高清视频| 欧美高清日韩| 国产精品色网| 粉嫩av一区二区三区免费观看| 欧美13一14另类| 欧美色综合网| 亚洲欧美日韩视频二区| 狠狠综合久久av| 亚洲第一在线综合在线| 在线观看成人一级片| 午夜亚洲福利在线老司机| 国产偷国产偷亚洲高清97cao| 日韩av不卡在线播放| 伊人久久亚洲影院| 久久久久久久久久码影片| 麻豆成人在线播放| 合欧美一区二区三区| 久久精品成人一区二区三区蜜臀| 久久国产精品一区二区三区| 亚洲欧美亚洲| 91亚色免费| 亚洲精品一卡二卡三卡四卡| 在线观看不卡| 精品一区久久久| 国产专区一区| 岛国视频一区| 欧美人成在线| 99re资源| 亚洲三级一区| 成人免费看片网址| 欧美成人tv| 久热精品视频| 欧美成人有码| 国产欧美日韩综合一区在线观看| 在线观看成人一级片| 狂野欧美性猛交xxxx巴西| 你懂的国产精品| 国产欧美日韩一区| 亚洲日本精品国产第一区| 欧美高清视频一区| 亚洲欧美久久久| 中文字幕一区二区中文字幕| 51成人做爰www免费看网站| 午夜日韩电影| 精选一区二区三区四区五区| 一区二区冒白浆视频| 一区二区三区四区视频在线观看 | 一区二区三区四区|