beeralex / validator
一个用于各种值类型的数组的验证库。
dev-main
2024-07-22 11:37 UTC
Requires
- php: >=8.0
This package is auto-updated.
Last update: 2024-09-23 04:07:42 UTC
README
这个库提供了一个简单的验证器实现。
安装
composer require beeralex/validator:dev-main
如何使用
要使用验证器,创建一个继承自 \Validator\Validator 的类,并实现一个 rules 方法,该方法描述验证规则。每条规则由 '|' 符号分隔。
protected function rules() : array { return [ 'name' => 'required|string|min:2|max:30', 'email' => 'email', 'age' => 'nullable|integer', ]; }
自定义错误消息
您还可以使用 messages 方法为每条规则创建自定义错误消息
protected function messages(): array { return [ 'name.required' => 'Имя обязательный параметр', 'name.min' => 'Имя должно быть не короче 2 символов', 'email.required' => 'Email обязательный параметр', 'email.email' => 'Email должен быть валидным', ]; }
标准规则
array- 检查值是否为数组。boolean- 检查值是否为布尔值。email- 检查值是否为有效的电子邮件。float- 检查值是否为浮点数(整数将返回 false)。in- 在数组中查找值。如果值不是数组,则返回 false。integer- 检查值是否为整数(字符串或浮点数将返回 false)。max:{param}- 检查字符串长度是否大于或等于传递的参数。如果值不是字符串,则返回 false。min:{param}- 检查字符串长度是否小于或等于传递的参数。如果值不是字符串,则返回 false。nullable- 值可以为空。numeric- 检查值是否为数字或数字字符串。required- 值是必需的。如果字段同时是 required 和 nullable,则 nullable 会被忽略。string- 检查值是否为字符串(空字符串也会返回 true)。
自定义规则
自定义规则应该继承自 Validator\Rules\Rule 类,并使用 userRules 方法添加它们,该方法需要在您的验证器类中重写,该方法应返回 Validator\RegistryCustomRules 类的对象。使用 addRule 方法并传入完整的类名。
protected function userRules() : ?RegistryUserRules { return (new RegistryUserRules)->addRule(TestRule::class); }
规则类名应以 Rule 结尾(TestRule),因此规则名称将形成为 test,类名中的 Rule 将被截断。或者,您可以重写静态方法 getRuleName,该方法应返回此规则的名称。
自定义规则名称必须是唯一的,且不能与标准规则冲突。现在,您可以使用 getRuleName 方法返回的名称在 rules 方法中形成规则。如果通过冒号传递参数,则您需要在您的规则类中实现自己的构造函数,并将值传递。
namespace Validator\Test; class TestRule extends \Validator\Rules\Rule { public function validate($value) : bool { return false; } public function getMessage(): string { return 'test сustom rule message'; } public static function getRuleName() : string { return 'newTestRuleName'; } }
使用示例
要验证数组,请创建一个验证器类的实例。构造函数接受一个数组,其中的值将被检查。
$validator = new UserValidator([ 'name' => 'имя', 'email' => 'email@email.com', 'age' => 33, ]);
要验证,请使用 validate 方法,该方法返回一个布尔值。
$validator->validate();
要获取错误消息,请使用 errors 方法。
$validator->errors();
要获取未验证的值数组,请使用 validated 方法。
$validator->validated();
class UserValidator extends \Validator\Validator { protected function rules() : array { return [ 'name' => 'required|string|min:2|max:30', 'email' => 'email|newTestRuleName', 'age' => 'nullable|integer', ]; } protected function messages(): array { return [ 'name.required' => 'Имя обязательный параметр', 'name.min' => 'Имя должно быть не короче 2 символов', 'email.required' => 'Email обязательный параметр', 'email.email' => 'Email должен быть валидным', 'email.newTestRuleName' => 'Новое сообщение для newTestRuleName' ]; } protected function userRules() : ? \Validator\RegistryUserRules { return (new \Validator\RegistryUserRules)->addRule(TestRule::class); } }