午夜免费_欧美一级免费看_欧美日韩一区二区视频在线观看_午夜视频在线_日本特黄a级高清免费大片_成年人黄色小视频

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 等规则。

其他的具体的验证规则,可查看 验证规则列表

主站蜘蛛池模板: 国产97色在线 | 国产 | 亚州久久| 51嫩草亚洲精品永久 | 国产一级片免费看 | 9191在线观看 | 久久久二区 | 99热精品免费 | 91免费观看在线 | 一级片免费在线 | 欧美日韩精品一区二区天天拍小说 | 综合久久中文字幕 | 91传媒在线看 | 亚洲毛片在线视频 | xxxx18hd日本hd护士 | 69av导航| 一区二区的视频 | 一区二区三区免费在线观看视频 | 91国内视频在线 | 99色电影 | 干片网在线观看 | 国产精品日韩一区 | 国产日本视频 | 天天干夜夜谢 | 91视频在线观看视频 | 九一视频在线观看免费 | 在线一区二区三区视频 | 国内在线一区 | 91视频在线观看视频 | 97热在线观看 | 夜夜爽亚洲人成8888 | 国产综合久久久久 | 国产91精选| 国产精品久久网站 | 在线男人天堂网 | 91精品国产色综合久久不卡蜜臀 | 不卡视频一区二区 | 免费看片91 | 免费观看视频91 | 亚洲天堂成人在线视频 | 九色网站在线观看 | 变态肉污np高h公交bl |