mousav1 / validify
Validify 是一个强大的 PHP 验证库,它提供灵活且可定制的验证规则、错误处理和预验证回调。
v1.0.0
2024-08-27 05:57 UTC
Requires
- php: ^7.4 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^11.3
README
介绍
Validify 是一个简单、可扩展且灵活的 PHP 验证库。它允许开发者为他们的数据输入定义验证规则并轻松验证它们。此包提供一组内置规则,也支持自定义验证规则。
特性
- 简单 API:易于使用的 API 用于定义验证规则。
- 可定制:允许添加自定义验证规则。
- 通配符支持:支持使用点表示法验证嵌套数据结构。
- 预验证回调:支持在验证之前执行自定义逻辑。
- 条件验证:根据动态条件应用验证规则。
- 日期和时间验证:使用内置规则验证日期和时间字段。
- 灵活的规则定义:支持使用数组和字符串格式定义规则。
安装
您可以通过 Composer 安装此包
composer require mousav1/validify
用法
基本验证
use Mousav1\Validify\Validator; $data = [ 'username' => 'john_doe', 'email' => 'john@example.com', 'age' => 25, ]; $validator = new Validator($data,[ 'username' => ['required', 'alpha'], 'email' => ['required', 'email'], 'age' => ['required', 'numeric', 'min:18'], ]); if (!$validator->validate()) { print_r($validator->getErrors()); }
流畅验证
Validify 包允许您使用流畅接口定义规则,使您的验证逻辑更易于阅读
use Mousav1\Validify\Validator; $data = [ 'name' => 'prefix_name', ]; $validator = new Validator($data); $validator->field('name') ->required() ->startsWith('prefix') ->applyRules(); if (!$validator->validate()) { print_r($validator->getErrors()); }
自定义验证规则
您可以通过自定义规则扩展验证器
use Mousav1\Validify\Validator; Validator::extend('even', function () { return new class { public function passes($field, $value) { return $value % 2 === 0; } public function name(): string{ return "even" } public function message($field) { return "{$field} must be an even number."; } }; }); $data = ['number' => 3]; $validator = new Validator($data,[ 'number' => ['even'] ]); if (!$validator->validate()) { print_r($validator->getErrors()); }
条件验证
条件验证允许您在满足特定条件时仅对某些字段应用验证规则。当您想要根据其他字段的值或动态条件来验证字段时,此功能非常有用。
$data = [ 'age' => 20, 'license' => '' ]; $validator = new Validator($data); // Adding a conditional rule $validator->addConditionalRule('license', ['required'], function ($data) { return $data['age'] > 18; }); if (!$validator->validate()) { print_r($validator->getErrors()); }
日期和时间验证
Validify 包包含验证日期和时间字段的规则。您可以使用这些规则确保您的日期和时间输入符合特定标准。
日期格式
$data = [ 'birthdate' => '2024-09-01', ]; $validator = new Validator($data, [ 'birthdate' => ['required', 'date_format:Y-m-d'], ]); if (!$validator->validate()) { print_r($validator->getErrors()); }
规则之后
$data = [ 'start_date' => '2024-01-01', 'end_date' => '2024-02-01', 'new_date' => '2024-02-01', ]; $validator = new Validator($data, [ 'end_date' => ['required', 'date_format:Y-m-d', 'after:start_date'], 'new_date' => ['required', 'date_format:Y-m-d', 'after:2024-01-01'], ]); if (!$validator->validate()) { print_r($validator->getErrors()); }
规则之前
$data = [ 'start_date' => '2024-01-01', 'end_date' => '2024-12-31', 'new_date' => '2024-12-30', ]; $validator = new Validator($data, [ 'start_date' => ['required', 'date_format:Y-m-d'], 'end_date' => ['required', 'date_format:Y-m-d', 'before:start_date'], 'new_date' => ['required', 'date_format:Y-m-d', 'before:2024-12-31'], ]); if (!$validator->validate()) { print_r($validator->getErrors()); }
自定义错误消息
您可以为特定字段和规则定义自定义错误消息
use Mousav1\Validify\Validator; $data = [ 'username' => '', 'email' => 'invalid-email', ]; $validator = new Validator($data,[ 'username' => ['required'], 'email' => ['required', 'email'], ]); $validator->setCustomMessages([ 'username.required' => 'The username field cannot be empty.', 'email.email' => 'Please provide a valid email address.', ]); if (!$validator->validate()) { print_r($validator->getErrors()); }
字段别名
您可以为字段名称设置别名以提供用户友好的错误消息
$validator->setAliases([ 'email' => 'Email Address' ]); $validator->validate(); print_r($validator->getErrors()); // Errors will display "Email Address" instead of "email".
预验证回调
您可以定义在验证过程开始之前运行的回调
$validator->beforeValidate(function (&$data) { $data['username'] = strtolower($data['username']); });
可用规则
- required
- min
- max
- numeric
- confirmed
- url
- in
- between
- regex
- alpha
- optional
- required_with