数据库 - Model 前置说明
官方开源项目 抓取代理IP

介绍

验证规则的定义通常有两种方式,
第一种,可以通过\x\Validate()->rule()方法临时修改验证规则,
第二种,自定义Validate规则类,通过rule属性定义验证规则。

提示:所有自定义的Validate规则类,都需要继承\x\Validate基类。

规则定义

自定义规则类,官方建议,统一存放在/box/validate/目录下:

namespace box\validate;
use x\Validate;

class User extends Validate
{
    // 定义字段对应的规则
    protected $rule = [
        'id' => 'require|int',
        'name'  =>  'require|username|between:1,120',
        'age' =>  'between:1,100',
        'email' =>  'email',
        'info.nick' =>  'alphaNum|min:10|max:20',
    ];
    // 格式
    // 字段 => 规则
}

这样就可以直接使用:

$ValiUser = new \box\validate\User();
// $data为验证数据集
if ($ValiUser->fails($data)) {
    // 打印失败原因
    var_dump($Validate->errors());
}

框架内置了一些常用的验证规则可以满足大部分的验证需求,具体每个规则的含义参考内置规则一节。

同时,框架还支持开发者自定义规则,具体自定义规则一节。

全部规则验证

正常情况下,规则验证只要有一条不通过,就会终止继续验证,如果要全部规则都验证之后,才终止fails()(不影响返回结果), 可以定义batch属性:

namespace box\validate;
use x\Validate;

class User extends Validate
{
    // 全部检测,默认 false
    protected $batch = true;
    // 定义字段对应的规则
    protected $rule = [
        'id' => 'require|int',
        'name'  =>  'require|username|between:1,120',
        'age' =>  'between:1,100',
        'email' =>  'email',
        'info.nick' =>  'alphaNum|min:10|max:20',
    ];
}

还是一样的使用流程:

$ValiUser = new \box\validate\User();
// $data为验证数据集
if ($ValiUser->fails($data)) {
    // 打印失败原因(可以看到全部的错误规则)
    var_dump($Validate->errors());
}

请求校验

校验器除了支持定义字段规则外,还支持统一注册请求校验,支持的规则可以再文档,内置规则中查看。

namespace box\validate;
use x\Validate;

class User extends Validate
{
    // 定义请求对应的规则
    protected $header_rule = [
        'request' => 'get|ajax|jwt:get,token'
    ];
}

上面的案例是说明,只允许Get-Ajax请求,并且校验Jwtjwt的数据源从get请求中获取token字段进行校验。

提示:$header_rule会在表单校验之前先执行。同时对所有场景值生效,不支持单一场景注册。

SW-X

企业级 - 高性能 PHP 框架

最后更新:3年前 . 作者-小黄牛

本篇目录