jijihohococo / ichi-validation
PHP 验证库
Requires
- php: >=7.0|>=8.0
This package is auto-updated.
Last update: 2024-09-22 05:50:10 UTC
README
Ichi Validation 是一个快速且安全的 PHP 验证库。
许可证
此软件包根据 MIT 许可证 开源
目录
安装
composer require jijihohococo/ichi-validation
测试
your_project/vendor/jijihohococo/ichi-validation > php test/index.php
使用
您可以使用 JiJiHoHoCoCo\IchiValidation\Validator 验证输入数据。
例如,让我们创建一个包含 'name'、'age' 和 'email' 的请求。
我们想要验证 'name' 不为空,'age' 必须是整数,且 'email' 必须不为空并且是有效的电子邮件格式字符串。
use JiJiHoHoCoCo\IchiValidation\Validator; $validator=new Validator(); $boolResult=$validator->validate($_REQUEST,[ 'name' => 'required' , 'age' => 'required|integer' , 'email' => ['required','email'] ]); // To get error messages in array if the boolResult is FALSE // $errorMessages=$boolResult==FALSE ? $validator->getErrors() : [];
如果您想使用多个方法验证数据,可以在方法之间添加 |
分隔符,或者将这些方法放入数组中。
验证方法
在验证数据时,如果数据未通过相关方法的验证,系统将错误信息添加到验证器对象中的数据上。
required
验证数据是否为空或非空。
$validator->validate($_REQUEST,[ 'name' => 'required' ]);
integer
验证数据是否为整数。
$validator->validate($_REQUEST,[ 'age' => 'integer' ]);
string
验证数据是否为字符串。
$validator->validate($_REQUEST,[ 'phone' => 'string' ])
bool
验证数据是否为布尔值。
$validator->validate($_REQUEST,[ 'married' => 'bool' ]);
double
验证数据是否为双精度浮点数。
$validator->validate($_REQUEST,[ 'weight' => 'double' ]);
array
验证数据是否为数组。
$validator->validate($_REQUEST,[ 'highlights' => 'array' ]);
email
验证数据是否为电子邮件格式。
$validator->validate($_REQUEST,[ 'email' => 'email' ]);
file
验证 $_FILES
参数是否为空。
$validator->validate($_REQUEST,[ 'image' => 'file' ]);
image
验证上传的文件是否为图片。
$validator->validate($_REQUEST,[ 'image' => 'image' ]);
confirm
验证 "field" 是否与 "confirm_field" 相同。
$validator->validate($_REQUEST,[ 'password' => 'confirmed' ]);
此代码验证 "password" 请求是否与 "confirm_password" 相同。
min
如果数据是字符串,则旨在验证此字符串的长度是否大于声明的最小值。
$validator->validate($_REQUEST,[ 'name' => 'min:10' ]);
如果数据是数字,则旨在验证此数字是否大于声明的最小值。
$validator->validate($_REQUEST,[ 'age' => 'min:18' ]);
如果数据是上传的文件,则旨在验证此上传文件的大小是否大于声明的最小 MB 数。
$validator->validate($_REQUEST,[ 'image' => 'min:3' ]);
max
如果数据是字符串,则旨在验证此字符串的长度是否小于声明的最大值。
$validator->validate($_REQUEST,[ 'name' => 'max:10' ]);
如果数据是数字,则旨在验证此数字是否小于声明的最大值。
$validator->validate($_REQUEST,[ 'age' => 'max:18' ]);
如果数据是上传的文件,则旨在验证此上传文件的大小是否小于声明的最大 MB 数。
$validator->validate($_REQUEST,[ 'image' => 'max:3' ]);
unique
验证数据是否存在于数据库表的记录中。
在使用此方法之前,您必须首先设置 PDO 对象。
$validator->setPDO($pdoObject);
然后您可以使用此方法。
$validator->validate($_REQUEST,[ 'email' => 'unique:user_table,email_field,NULL' ]);
上述代码验证请求 'email' 是否与 'user_table' 表中的 'email_field' (列) 的任何值相同。
使用这种方式验证数据,用于在将新数据插入数据库时检查数据重复。
您也可以用这种方式验证相同的过程。
$validator->validate($_REQUEST,[ 'email' => 'unique:user_table,email_field,'.NULL ]);
$validator->validate($_REQUEST,[ 'email' => 'unique:user_table,email_field,'. 1 ]);
上述代码用于验证请求的'email'与'user_table'(表)中'id'不为1的'email_field'(列)的值是否相同。
使用这种方式验证数据,用于在将数据更新到数据库时检查数据重复。
当表的主键是'id'时使用。
如果表的主键不是'id',您必须使用以下代码
$validator->validate($_REQUEST,[ 'email' => 'unique:user_table,email_field,'. 1.',user_id' ]);
mime
验证上传的文件扩展名是否是特定文件扩展名之一。
$validator->validate($_REQUEST,[ 'image' => 'mime:png,jpg,jpeg,gif' ]);
between
验证请求编号是否在特定两个数字之间。
$validator->validate($_REQUEST,[ 'age' => 'between:18,25' ]);
dimensions
验证上传的图片尺寸是否符合要求。
此方法中包含子方法。
width
min_width
max_width
height
min_height
max_height
width
验证上传图片的宽度是否与声明的宽度相同。
$validator->validate($_REQUEST,[ 'image' => 'dimensions:width=100' ]);
min_width
验证上传图片的宽度是否大于声明的最小宽度。
$validator->validate($_REQUEST,[ 'image' => 'dimensions:min_width=100' ]);
max_width
验证上传图片的宽度是否小于声明的最大宽度。
$validator->validate($_REQUEST,[ 'image' => 'dimensions:max_width=100' ]);
height
验证上传图片的高度是否与声明的宽度相同。
$validator->validate($_REQUEST,[ 'image' => 'dimensions:height=100' ]);
min_height
验证上传图片的高度是否大于声明的最小高度。
$validator->validate($_REQUEST,[ 'image' => 'dimensions:min_height=100' ]);
max_height
验证上传图片的高度是否小于声明的最大高度。
$validator->validate($_REQUEST,[ 'image' => 'dimensions:max_height=100' ]);
使用多个子方法
您可以使用多个子方法来验证图像的尺寸。
$validator->validate($_REQUEST,[ 'image' => 'dimensions:width=100,height=100' ]);
image_ratio
验证上传图片的宽度和高度是否与声明的比例相同。
$validator->validate($_REQUEST,[ 'image' => 'image_ratio:1/3' ]);
定制
自定义错误信息
您可以自定义验证的错误信息。
$validator->validate($_REQUEST,[ 'name' => 'required', 'email' => ['required','string','email'] ],[ 'required' => 'Data is required' ]);
上述代码是在'required'验证方法未通过时自定义错误信息。
$validator->validate($_REQUEST,[ 'name' => 'required', 'email' => 'required|string|email' ],[ 'name.required' => 'Name is required', ]);
上述代码是在'name'请求的'required'验证方法未通过时自定义错误信息。
自定义验证方法
如果您想创建自己的验证方法,您必须创建验证类。
您可以通过命令行创建验证类。
首先,您需要在您的项目文件夹下创建一个名为"ichi"的文件,并在该文件中使用以下代码
#!/usr/bin/env php <?php require __DIR__.'/vendor/autoload.php'; use JiJiHoHoCoCo\IchiValidation\Command\ValidationCommand; $validationCommand=new ValidationCommand; $validationCommand->run(__DIR__,$argv);
然后您可以在命令行中创建验证类
php ichi make:validation TestValidation
默认文件文件夹是"app/Validations"。因此,在执行命令后,您创建的验证类将位于此默认文件文件夹中。如果您想更改默认文件夹路径,您可以在"ichi"文件中更改它。
$validationCommand=new ValidationCommand; $validationCommand->setPath('new_app/Validations'); $validationCommand->run(__DIR__,$argv);
您必须在创建的验证类中设置接受的验证规则。让我们在这个创建的类中接受21岁以上的验证。
namespace App\Validations; use JiJiHoHoCoCo\IchiValidation\CustomValidator; class TestValidation extends CustomValidator{ public function __construct(){ } public function rule(){ return $this->value>21; } public function showErrorMessage(){ return 'Your ' .$this->attribute . ' should be over 21.'; } }
在调用您的验证类时
use App\Validations\TestValidation; $validator=new Validator; $validator->validate($_REQUEST,[ 'name' => 'required|string', 'age' => ['required',new TestValidation()] ]);
$this->attribute
这是验证数据字段名称。例如,它是'age'。
$this->value
这是数据值。例如,它是'age'请求的值。
您可以在构造函数中传递其他值。