jijihohococo/ichi-validation

1.4 2023-12-31 19:59 UTC

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

验证上传的图片尺寸是否符合要求。

此方法中包含子方法。

  1. width
  2. min_width
  3. max_width
  4. height
  5. min_height
  6. 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'请求的值。

您可以在构造函数中传递其他值。