承接 itwmw/validate 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

itwmw/validate

Composer 安装命令:

composer require itwmw/validate

包简介

微梦增强表单验证

README 文档

README

Star Fork

Latest Stable Version Tests License PHP Version Require

中文 | English

介绍

一个让你的表单验证更为方便,快捷,安全的扩展,满足你的一切验证需求。

目录

安装

使用composer命令

composer require itwmw/validate

完整文档查看完整文档

简单验证

支持简单定义一个验证器并进行验证:

try {
    $data = Validate::make([
        'user' => 'required|email',
        'pass' => 'required|lengthBetween:6,16',
    ], [
        'user.required'      => '请输入用户名',
        'user.email'         => '用户名格式错误',
        'pass.required'      => '请输入密码',
        'pass.lengthBetween' => '密码长度为6~16位',
    ])->check($data);
} catch (ValidateException $e) {
    echo $e->getMessage();
}

如果验证通过,则返回所有通过验证的值,如未通过,则抛出一个Itwmw\Validate\Exception\ValidateException异常

验证器定义

为具体的验证场景或者数据表单定义验证器类,我们需要继承Itwmw\Validate\Validate类,然后实例化后直接调用验证类的check方法即可完成验证,下面是一个例子:

我们定义一个LoginValidate验证器类用于登录的验证。

class LoginValidate extends Validate
{
    protected $rule = [
        'user' => 'required|email',
        'pass' => 'required|digits_between:6,16',
    ];
    
    protected $message = [
        'user.required'       => '请输入用户名',
        'user.email'          => '用户名格式错误',
        'pass.required'       => '请输入密码',
        'pass.digits_between' => '密码长度为6~16位',
    ];
}

类属性定义的错误消息,优先级要高于自定义规则中的默认回复,高于自定义规则方法返回的错误

数据验证

$data = [
    'user' => '123@qq.com',
    'pass' => ''
];
$validate = new LoginValidate();
$validate->check($data);

此时会抛出一个Itwmw\Validate\Exception\ValidateException异常,message为请输入密码

$data = [
    'user' => '123@qq.com',
    'pass' => '123456'
];
$validate = new LoginValidate();
$data = $validate->check($data);

验证成功,并返回通过验证的值,返回的值为数组类型

验证数组

验证表单的输入为数组的字段也不难。你可以使用 「点」方法来验证数组中的属性。例如,如果传入的 HTTP 请求中包含search[keyword]字段, 可以如下验证:

protected $rule = [
    'search.order'   => 'numeric|between:1,2',
    'search.keyword' => 'chsAlphaNum',
    'search.recycle' => 'boolean',
];

你也可以验证数组中的每个元素。例如,要验证指定数组输入字段中的每一个 id 是唯一的,可以这么做:

protected $rule = [
    'search.*.id' => 'numeric|unique:account'
];

数组规则的错误消息的定义也一样

protected $message = [
    'search.order.numeric'       => '排序参数错误',
    'search.order.between'       => '排序参数错误',
    'search.keyword.chsAlphaNum' => '关键词只能包含中文,字母,数字',
    'search.recycle.boolean'     => '参数错误:recycle',
];

验证器类属性

$rule

用户定义验证器的验证规则,也可以通过setRules方法来进行设置,此方法为叠加,如果参数为null则为清空全部规则

// 类中定义
protected $rule = [
    'user' => 'required'
];

// 使用方法定义
$v->setRules([
    'user' => 'required'
]);

$message

用户定义验证器的错误信息,也可以通过setMessages方法来进行设置,此方法为叠加,如果参数为null则为清空全部错误消息

// 类中定义
protected $message = [
    'user.required' => '账号必须填写'
];

// 使用方法定义
$v->setMessages([
    'user.required' => '账号必须填写'
]);

更多用法可以查看错误消息一节

$scene

定义验证场景的数据,用于指定验证场景对应的验证字段等,详细用法查看验证场景一节,同样也可以通过setScene方法来进行设置,此方法为叠加,如果参数为null则为清空全部验证场景

// 类中定义
protected $scene = [
    'login' => ['user', 'pass']
];

// 使用方法定义
$v->setScene([
    'login' => ['user', 'pass']
]);

$casts

定义验证器的字段转换规则,支持enumarrayjson等类型转换,详细用法查看类型转换一节

protected $casts = [
    'id'      => 'int',
    'status'  => 'boolean',
    'options' => 'array',
];

$event

定义此验证器下的全局事件,详细用法查看事件一节

protected $event = [
    CheckSiteStatus::class
];

$customAttributes

定义验证字段的名称,也可以通过setCustomAttributes方法来进行设置,此方法为叠加,如果参数为null则为清空全部字段名称, 错误消息中的:attribute会使用下面的值对应的替换

protected $customAttributes = [
    'user' => '账号',
    'pass' => '密码'
];

$preprocess

为字段定义一个前置数据处理器

protected $preprocessor = [
    'name' => ['默认名称', ProcessorExecCond::WHEN_EMPTY]
];

关于前置数据处理器的详情请查看数据处理器一节

$postprocessor

为字段定义一个后置数据处理器

protected $postprocessor = [
    'name' => ['trim', ProcessorExecCond::WHEN_NOT_EMPTY, ProcessorParams::Value]
];

关于后置数据处理器的详情请查看数据处理器一节

$ruleMessage

当前类中自定义方法验证失败后的错误消息

 protected $ruleMessage = [
    ':attribute的值只能具有中文'
];

点击查看示例

$regex

预定义正则表达式验证规则,详情查看正则表达式规则

protected $regex = [
	'number' => '/^\d+$/'
];

$group

定义验证规则组

protected $group = [
    'username' => 'alpha_num|min:5|max:10'
];

protected $rule = [
    'username' => 'required|username'
];

也可以使用数组格式:

protected $group = [
    'username' => [
        'alpha_num',
        'min:5',
        'max:10'
    ]
];

protected $rule = [
    'username' => 'required|username'
];

$exceptions

为指定字段或者指定字段的指定规则在验证失败时抛出自定义异常类

protected $rule = [
    'name' => 'required'
];

protected $exceptions = [
    TestException::class => 'name.required'
];

如多个字段或多个规则:

protected $rule = [
    'name' => 'required|integer',
    'age'  => 'required|integer'
];

protected $exceptions = [
    TestException::class => [
        'name',
        'age.required'
    ]
];

name字段的所有规则以及age字段的required规则指定,如果验证失败后抛出TestException异常

protected $rule = [
    'name' => 'required|integer',
    'age'  => 'required|integer'
];

protected $exceptions = TestException::class;

当此验证器验证失败后,会抛出TestException异常

alias

定义验证字段的别名,在验证通过后,返回数据中的字段名会根据别名映射进行重命名

protected $rule = [
    'username' => 'required|string|between:6,18|alpha_num',
    'password' => 'required|string|min:1|max:12|alpha_num'
];

protected $alias = [
    'username' => 'account',
];

对于数组,支持使用.来进行嵌套操作,但是不支持*

protected $rule = [
    'user'      => 'required|array:name,age',
    'user.name' => 'required|string',
    'user.age'  => 'required|integer'
];

protected $alias = [
    'user.name' => 'user.nickname'
];

itwmw/validate 适用场景与选型建议

itwmw/validate 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 952 次下载、GitHub Stars 达 0, 最近一次更新时间为 2024 年 03 月 24 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「validator」 「validate」 「表单�」 「证」 「�」 「证」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 itwmw/validate 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 itwmw/validate 我们能提供哪些服务?
定制开发 / 二次开发

基于 itwmw/validate 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 952
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 6
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2024-03-24