Laravel Fluent 验证 , 经过 桑德·穆勒 是一个将 Laravel 传统的基于字符串的验证语法替换为流畅的面向对象 API 的软件包。它提供 IDE 自动补全和类型安全功能,确保您只应用对正在验证的数据类型有意义的规则。
流畅且类型安全的规则
而不是像这样连接字符串
'required|string|min:2|max:255'
您可以使用一系列方法。该 API 具有上下文感知能力,这意味着一旦您定义了规则类型(例如字符串或日期),则只有与该类型相关的方法才可用:
使用
SanderMuller\LaravelFluentValidation\FluentRule
;$规则
=
[
'姓名'
=>
FluentRule
::
细绳
()
->
必需的
()
->
分钟
(
2
)
->
最大限度
(
255
),
'published_at'
=>
FluentRule
::
日期
()
->
后
(
'今天'
)
->
可空
(),
'年龄'
=>
FluentRule
::
整数
()
->
分钟
(
18
)
->
最大限度
(
99
),];
嵌套数组验证
该软件包通过使用以下方式简化了嵌套数据结构的验证:
each()
和
children()
方法。这允许您以反映数据结构的方式定义规则,而不是使用扁平的点表示法键:
'项目'
=>
FluentRule
::
大批
()
->
必需的
()
->
分钟
(
1
)
->
每个
(
FluentRule
::
孩子们
([
'ID'
=>
FluentRule
::
整数
()
->
必需的
()
->
存在
(
'产品'
,
'ID'
),
'数量'
=>
FluentRule
::
整数
()
->
必需的
()
->
分钟
(
1
),])),
性能优化
除了语法改进之外,该软件包还包含几个以性能为中心的功能:
- O(n) 通配符扩展: 对于大型嵌套数组,该软件包使用优化的扩展算法,其速度比 Laravel 原生的 O(n²) 方法快得多。
- 快速检查封口: 常用规则被编译成 PHP 闭包,使验证器能够绕过主验证引擎传递值的开销。
- 批量数据库查询:
exists和unique通配符数组的规则会自动批量处理成单个数组。whereIn查询以减少数据库负载。
集成消息和标签
您可以直接在规则链中定义易于理解的标签和自定义错误消息。这样就无需维护单独的规则库。
attributes()
或者
messages()
表单请求中的数组:
'电子邮件'
=>
FluentRule
::
细绳
()
->
电子邮件
()
->
标签
(
'电子邮件'
)
->
信息
(
请提供有效的公司邮箱地址。
,
'电子邮件'
),
安装
您可以通过 Composer 安装该软件包:
作曲家
要求
sandermuller/laravel-fluent-validation
该软件包需要 PHP 8.2+ 和 Laravel 11.0 或更高版本。它还包含用于集成的专用特性。 活线 和 灯丝 项目。
您可以访问以下链接了解更多关于此软件包的信息并查看完整文档: GitHub 。







