hsnfirdaus / class-validator
使用PHP属性进行类验证
v2.0.4
2024-09-14 10:22 UTC
Requires
- php: >=8.1
Requires (Dev)
- doctrine/coding-standard: ^12.0
- phpunit/phpunit: ^11
README
PHP类验证,使用php 8.0属性。
安装
使用Composer
composer require "hsnfirdaus/class-validator"
用法
示例用法
<?php declare(strict_types=1); namespace MyApp\Contract\User; use Hsnfirdaus\ClassValidator\Attribute\IsEnum; use Hsnfirdaus\ClassValidator\Attribute\IsNotEmpty; use Hsnfirdaus\ClassValidator\Attribute\IsOptional; use Hsnfirdaus\ClassValidator\Validator; use MyApp\Entity\Enum\UserRole; use MyApp\Entity\Enum\UserType; class AddUserContract { #[Name(name: 'User Type')] #[IsNotEmpty] #[IsEnum(enum: UserType::class)] public string $type = 'Can\'t be empty'; #[IsNotEmpty] #[IsEnum(enum: UserRole::class)] public string $role = 'ValidEnumValue'; #[IsOptional] public string $identifier; public function validate() { Validator::validate($this); } }
然后调用验证方法,如果发现错误将抛出异常。目前此包仅支持属性属性。
可用属性
可用属性(见 src/Attribute 文件夹)
IsEmail()
: 邮箱验证(使用phpfilter_var
函数)。IsEnum(enum: ExampleEnum::class)
: 从字符串值进行枚举验证。IsInteger()
: 整数验证(使用phpis_int
函数)。IsNotEmpty()
: 验证去除空白符后的值不是空字符串或null。IsNumeric(length?: number, minLength?: number, maxLength?: number)
: 验证数字字符串(使用phpis_numeric
函数)。IsOptional()
: 属性用于标记属性是可选的,允许未定义。IsString(length?: number, minLength?: number, maxLength?: number)
: 验证字符串长度。Name(name: string)
: 设置错误信息字段名(可选,默认将使用属性名)。ValidateArrayClass(type: string)
: 验证类的嵌套数组。ValidateClass()
: 验证嵌套类。
错误信息
目前仅支持英文和印尼语错误信息(见 locale)。默认为英文。
要更改区域设置,您可以在您的根或启动项目中使用setLang
方法。
<?php declare(strict_types=1); require __DIR__.'/vendor/autoload.php'; use Hsnfirdaus\ClassValidator\Validator; Validator::setLang('id'); // Then you can call Validator::validate method
或者,您可以使用setLangDir
方法使用您自己的区域设置。例如,在__DIR__.'/locale/kr.php
中创建您的区域设置文件,然后您可以使用
Validator::setLangDir(__DIR__.'/locale'); Validator::setLang('kr');