easyswoole - 基于swoole扩展实现的一款高性能php框架

EasySwoole 驗證器組件

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

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

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

組件要求

  • 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 驗證器提供了默認驗證錯誤信息的規則,點擊查看 默認驗證錯誤信息的規則

使用示例如下:

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

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

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

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

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

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

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

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

使用示例如下:

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

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

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

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

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

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

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

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

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

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

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

自定義驗證

使用自定義驗證器類的自定義驗證規則

使用示例如下:

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

class CustomValidator extends \EasySwoole\Validate\Functions\AbstractValidateFunction
{
    /**
     * 返回當前校驗規則的名字
     */
    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;
    }
}

// 待驗證數據
$data = [
    'mobile' => '12312345678'
];

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

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

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

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

特殊驗證

使用帶 * 號的匹配規則進行驗證

使用示例如下:

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

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

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

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

快速驗證

我們還提供了數組快速驗證方式。

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

參數:

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

返回值:

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

使用示例如下:

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

// 驗證規則
$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);

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

暫不支持 inArraynotInArrayfunccallUserRuleallowFileallowFileType 等規則。

其他的具體的驗證規則,可查看 驗證規則列表

主站蜘蛛池模板: 文化艺术网-专注文化,服务艺术 温州网络公司_网站建设_网络营销策划_阿里淘宝店铺服务-温州聚欣网络科技有限公司 | 上海森信实验仪器有限公司 | 江西挤塑板_挤塑板厂家_挤塑板价格-江合保温材料 | 盐城市宏展环保材料有限公司-官网-滤袋,过滤袋,液体过滤袋,袋式过滤器,无纺布过滤袋,废液过滤袋 盐城市城镇化建设投资集团有限公司[盐城国资企业、盐城国资集团、盐城文化旅游、盐城基础设施、盐城土地开发、盐城粮食收储] | 塑木地板,塑木栏杆,塑木地板价格,塑木地板厂家—浙江尚元塑木制品有限公司 | 注塑加工,无锡塑料件加工,注塑模具加工厂家-无锡富立康精密模塑有限公司 | 树脂井盖,复合井盖,井盖厂家-山东宝盖新材料 | 长沙广告设计公司|长沙广告制作|湖南户外广告制作|商业美陈就找湖南盛翔文化传媒有限公司老品牌高品质 | 景德镇薪如陶瓷有限公司| 荆门市彩富机械有限责任公司|精铸件|五金|机械配件 | 首页-青特集团官方网站| 无尘车间_洁净车间_净化车间_洁净室工程一站式净化服务商-深圳市美克威尔环境科技有限公司 | 河南反渗透设备,河南纯净水设备,河南软化水设备,郑州EDI超纯水设备,郑州水处理设备厂家_河南江宇环保科技有限公司 | 唐山自粘防水|沥青防水涂料信息|压膜防水卷材报价-德生防水股份有限公司 | 戏曲下载网,唱戏机戏曲下载,戏曲视频下载,戏曲MP3下载 - 梨园风 | 深圳专卖店设计,餐饮空间设计,酒店空间策划设计【左右高端人文空间设计公司】 | 河北高新技术企业认定,沧州商标注册,沧州9001质量管理体系认证,沧州高新技术企业认定,沧州体系认证,沧州商标续展,沧州版权登记,河北国瑞企业管理咨询有限公司 | 上海中泉泵业制造有限公司-柴油机泵,一体化泵站,柴油机消防泵,泵站,预制一体化泵站 | 注册会计师考试_CPA考试_注册会计师培训-北京注册会计师协会培训网 | 铜陵租车_铜陵租车网_铜陵租车公司_铜陵婚车租赁_铜陵汽车租赁公司-良车汽车租赁 | 液化气密度测定仪,原油有机氯测定仪-泰州市姜堰分析仪器厂 | 长沙变频器维修,变频器维修,ABB变频器维修,西门子变频器维修,施耐德变频器维修,伺服驱动器维修,工业机器人维修,20年专业工控电气维修,长沙文铖电气设备有限公司_长沙文铖电气设备有限公司 | 首页-南德电气集团-电能质量产品解决方案|能源数字化系统解决方案|新能源检测评估服务|电力/光伏/储能EPC工程总承包 | 新房_二手房_别墅_全包装修-天美艺装饰【官网】-深圳装修公司 | 自动隔油提升设备,消防稳压一体设备,苏州不锈钢消防水箱,污水提升设备厂家,无负压变频供水设备厂家-苏州脉泉供水设备有限公司 | 耐磨锤头|合金锤头|高铬耐磨锤头|破碎机锤头|双金属双液复合锤头_巩义东辰实业 合金耐磨锤头铸造厂 | 上海希喆机械有限公司-Schunk雄克,雄克卡盘, 雄克机械手, B+R贝加莱, ELCIS编码器,艾西斯编码器, TWK编码器,Nexen,Joyce dayton升降机,Thomson汤姆森,TPG减速机,INA导轨。 | 清研集团 - 北京清研灵智科技有限公司| 珀金斯动力设备扬州有限公司 | 压力蒸汽灭菌器_脉动真空灭菌器_环氧乙烷灭菌器_等离子灭菌器_广州市科洋 | 宁波明驰同步带有限公司| 企业资质认证-上海翼弘企业咨询管理有限公司 | 长沙升阳化工材料有限公司| 扬州市检测仪器科技有限公司 | 专业生产安检门-X光机-防爆罐-金属探测门-中警思创军警装备厂家 专业色素炭黑生产厂家,提供各种用途色素炭黑价格-枣庄鑫源化工 专业护工_医院护工_护工陪护_住家护工- 心陪护 | 深圳彩盒印刷-纸盒包装-不干胶标签印刷-深圳印刷厂家-深圳贝的印刷 | 四边封包装机_蒸汽眼罩机_暖宝宝/足贴/热灸贴生产设备_浙江硕源机械有限公司 | 陕西筱润智能科技有限公司 干部人事智能档案柜 智能密集架 智能档案柜 部队选层文件智能柜 智能枪弹柜 财务智能档案柜 边防武警智能密集架 医院智能档案柜 部队选层文件智能柜智能枪弹柜 学校医院文件柜 企事业单位公检法智能文件柜 生产厂家-筱润智能科技有限公司 RFID射频智能密集架 全自动智能选层档案柜 智能密保柜 枪柜部队营房营具床桌椅办公家具 办公用品档案盒设备货架 全自动智能选层柜生产厂家-筱润智能科技有限公司 | 全自动贴标机厂家-深圳市优斯迪自动贴标机官网 | 专业生产安检门-X光机-防爆罐-金属探测门-中警思创军警装备厂家 专业色素炭黑生产厂家,提供各种用途色素炭黑价格-枣庄鑫源化工 专业护工_医院护工_护工陪护_住家护工- 心陪护 | 整体滤板模板-S型塑料滤砖-MBBR生物悬浮球填料-微孔曝气器-大恒环保科技 |