黄p网站_在线看中文字幕_亚洲电影免费观看_成人激情视频_欧美成视频_中国av在线

EasySwoole 驗證器組件

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

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

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

組件要求

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

安裝方法

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

composer require easyswoole/validate

倉庫地址

easyswoole/validate

基本使用

普通驗證

支持的驗證方法

普通驗證支持的驗證方法有如下:activeUrlallDigitalallowFileallowFileTypealphaalphaDashalphaNumbetweenbetweenLenbooldateAfterdateBeforedecimaldifferentdifferentWithColumnequalequalWithColumnfloatfuncgreaterThanWithColumninArrayintegerisArrayisIplengthlengthMaxlengthMinlessThanWithColumnmaxminurlmoneynotEmptynotInArraynumericoptionalregexrequiredtimestampAftertimestampAfterDatetimestampBeforetimestampBeforeDateurl

驗證方法的具體使用可查看 方法列表

使用組件提供的默認的驗證錯誤信息提示

validate 驗證器提供了默認驗證錯誤信息的規(guī)則,點擊查看 默認驗證錯誤信息的規(guī)則

使用示例如下:

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

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

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

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

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

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

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

使用自定義的驗證錯誤信息提示

使用示例如下:

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

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

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

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

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

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

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

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

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

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

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

自定義驗證

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

使用示例如下:

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

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

    /**
     * 驗證失敗返回 false,或者用戶可以拋出異常,驗證成功返回 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;
    }
}

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

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

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

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

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

特殊驗證

使用帶 * 號的匹配規(guī)則進行驗證

使用示例如下:

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

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

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

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

快速驗證

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

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

參數(shù):

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

返回值:

  • \EasySwoole\Validate\Validate::class實例.

使用示例如下:

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

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

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

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

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

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

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

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

主站蜘蛛池模板: 香蕉久久av一区二区三区 | 国产精品乱码一区二区三区 | 欧美一区二区另类 | 午夜在线视频免费观看 | 一级全黄少妇性色生活片免费 | 久久久一区二区三区 | 欧美成人中文字幕 | 国产精品免费观看 | 黄色片视频免费 | 深夜成人小视频 | 在线观看免费成人av | 国产99久久精品 | 亚洲精品二区三区 | 久久精品免费一区二区三区 | 国产一区二区精品丝袜 | 中文字幕在线资源 | 国产精品九九久久99视频 | 欧洲美女7788成人免费视频 | 成人免费观看49www在线观看 | 91麻豆精品国产91久久久资源速度 | 日韩一区二区观看 | 国产精品视频在线观看 | 亚洲精品视频在线播放 | 欧美成人午夜视频 | 久操成人 | 亚洲精品一区国语对白 | 91免费看片 | 久久久精彩视频 | 一本色道精品久久一区二区三区 | 欧美日韩中文字幕 | 日日夜夜一区二区 | 蜜桃视频在线观看www社区 | 欧美日韩国产一区二区三区不卡 | 亚洲一区中文 | 国产综合视频 | 日韩手机在线观看 | 久久的爱 | 日韩欧美在线观看一区二区 | 美女久久久久久久久久久 | 男女深夜视频 | 久久这里只有精品首页 |