grahamsutton / validator
一个简单的PHP验证库。
Requires (Dev)
- phpunit/phpunit: ^7.2
This package is not auto-updated.
Last update: 2024-09-26 00:44:49 UTC
README
验证器是一个简单的PHP验证库,旨在消除创建(通常是)丑陋的验证逻辑的麻烦,并从Laravel的内部验证库中汲取了大量灵感。
此库旨在轻量级(无依赖!)且易于使用。
要求
- PHP 7.1及更高版本
要安装,请在项目的根目录中运行以下命令
$ composer require grahamsutton/validator
可用规则
两种使用方式
有两种方式可以执行验证
链式方法
如果您想执行验证,可以链式调用验证方法...
use Validator\Validator; $is_valid = (new Validator()) ->required('name', 'Graham') ->numeric('age', 33) ->email('email', 'grahamsutton2@gmail.com') ->int('total', 123) ->float('amount', 123.45) ->boolean('likes_dinos', true) ->min('fav_color', 'green', 3) ->max('state', 'FL', 2) ->date('birthday', '1980-01-01') ->array('fav_nums', [7, 4, 92]) ->accepted('terms', true) ->afterDate('start_date', '2018-05-24', '2018-01-31') ->beforeDate('end_date', '2024-05-24', '2218-01-31') ->validate();
-or-
管道格式(推荐)
如果您想在字段上执行多个验证,可以使用与Laravel相同的管道格式。这是执行验证的首选方法,大多数情况下看起来更好。
use Validator\Validator; $validator = new Validator([ 'name' => 'required|min:3|max:15', 'age' => 'required|numeric', 'email' => 'required|email', 'total' => 'required|int', 'amount' => 'required|float' 'likes_dinos' => 'required|boolean', 'date' => 'required|date', 'fav_nums' => 'required|array', 'terms' => 'accepted', 'start_date' => 'required|afterDate:2018-01-31', 'end_date' => 'required|beforeDate:2218-01-31', ]); $is_valid = $validator->validate([ 'name' => 'someone', 'age' => 23, 'email' => 'someone@example.com', 'total' => 123, 'amount' => 123.45, 'likes_dinos' => true, 'date' => '2018-02-18 23:00:00', 'fav_nums' => [7, 4, 92], 'terms' => true, 'start_date' => '2018-05-24', 'end_date' => '2024-05-24', ]));
获取错误
获取错误很简单。当验证失败时,它将记录到一个数组中,可以从两个不同的方法中检索:`getErrors`或`getAllErrors`。
getErrors: array
这将返回一个平展的关联数组,其中键是失败的字段名,值是检测到的第一个错误。
注意:请注意,某些值可能失败多个验证,例如`name`,但每个字段只有一个错误信息。
use Validator\Validator; $validator = new Validator([ 'name' => 'required|min:3|max:15', 'age' => 'required|numeric', 'email' => 'required|email', 'total' => 'required|int', 'amount' => 'required|float' 'likes_dinos' => 'required|boolean', 'date' => 'required|date', 'fav_nums' => 'required|array', 'terms' => 'accepted', 'start_date' => 'required|afterDate:2018-01-31', 'end_date' => 'required|beforeDate:2218-01-31', ]); // $is_valid will be false $is_valid = $validator->validate([ 'name' => '', // invalid 'age' => 'string', // invalid 'email' => '@example.com', // invalid 'total' => 123.45, // invalid 'amount' => 123, // invalid 'likes_dinos' => 12, // invalid 'date' => 'incorrect' // invalid 'fav_nums' => 'should be an array', // invalid 'terms' => false, // invalid 'start_date' => '2017-05-24', // invalid 'end_date' => '2324-05-24', // invalid ])); $validator->getErrors(); // Returns: // [ // 'name' => 'The name field is required.', // 'age' => 'The age field must be a numeric value.', // 'email' => 'The email field must be a valid email.', // 'total' => 'The total field must be an integer.', // 'amount' => 'The amount field must be a float.', // 'likes_dinos' => 'The likes_dinos field must be a boolean value.', // 'date' => 'The date field is not a valid date.', // 'fav_nums' => 'The fav_nums field must be an array.', // 'terms' => 'The terms field must be accepted.', // 'start_date' => 'The start_date field value must be after 2018-01-31 00:01:00 (yyyy-mm-dd hh:mm:ss).', // 'end_date' => 'The end_date field value must be before 2218-01-31 00:01:00 (yyyy-mm-dd hh:mm:ss).', // ]
getAllErrors: array
如果您想获取所有字段记录的所有错误信息,只需使用`getAllErrors`方法。这将返回失败的字段名作为键,每个失败字段的错误信息数组作为值。
use Validator\Validator; $validator = new Validator([ 'name' => 'required|min:3|max:15', 'age' => 'required|numeric', 'email' => 'required|email', 'accepted' => 'required|boolean', 'date' => 'required|date' ]); // $is_valid will be false $is_valid = $validator->validate([ 'name' => '', // invalid 'age' => 'string', // invalid 'email' => '@example.com', // invalid 'accepted' => 12, // invalid 'date' => 'incorrect' // invalid ])); $validator->getAllErrors(); // Returns: // [ // 'name' => [ // 'The name field is required.', // 'The name field must be greater than or equal to 3 characters.' // ], // 'age' => ['The age field must be a numeric value.'], // 'email' => ['The email field must be a valid email.'], // 'accepted' => ['The accepted field must be a boolean value.'], // 'date' => ['The date field is not a valid date.'] // ]
可用规则
required
验证值不为空且字段存在。
use Validator\Validator; $is_valid = (new Validator) ->required('field_name', 'value') ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'required' ]); $is_valid = $validator->validate([ 'field_name' => 'value' ]);
默认错误信息:`{field_name} 字段是必填的`。
max:int
确定字段可以具有的最大值或字符串长度。
如果提供的值是整数,验证将比较提供的整数是否小于或等于指定的整数。
如果提供的值是字符串,验证将比较值的字符串长度(由PHP的`strlen`函数确定)是否小于或等于指定的整数。
use Validator\Validator; $is_valid = (new Validator) ->max('field_name', 'value', $max = 8) ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'max:8' ]); $is_valid = $validator->validate([ 'field_name' => 'value' ]);
默认错误信息:`{field_name} 字段必须小于或等于 {int} 个字符`。
min:int
确定字段可以具有的最小值或字符串长度。
如果提供的值是整数,验证将比较提供的整数是否大于或等于指定的 int 值。
如果提供的值是字符串,验证将比较该值(由 PHP 的 strlen 函数确定)的字符串长度是否大于或等于指定的 int 值。
use Validator\Validator; $is_valid = (new Validator) ->min('field_name', 'value', $min = 3) ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'min:3' ]); $is_valid = $validator->validate([ 'field_name' => 'value' ]);
默认错误信息:{field_name} 字段必须大于或等于 {int} 个字符。
int
基于 PHP 的 is_int 函数确定一个值是否为整数。
use Validator\Validator; $is_valid = (new Validator) ->int('field_name', $value = 123) ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'int' ]); $is_valid = $validator->validate([ 'field_name' => 123 ]);
默认错误信息:{field_name} 字段必须是一个整数。
float
基于 PHP 的 is_float 函数确定一个值是否为浮点数。
use Validator\Validator; $is_valid = (new Validator) ->float('field_name', $value = 123.45) ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'float' ]); $is_valid = $validator->validate([ 'field_name' => 123.45 ]);
默认错误信息:{field_name} 字段必须是一个浮点数。
numeric
基于 PHP 的 is_numeric 函数确定一个值是否为数字。该值可以是字符串,只要它可以被转换为数值。
use Validator\Validator; $is_valid = (new Validator) ->numeric('field_name', $value = 23) ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'numeric' ]); $is_valid = $validator->validate([ 'field_name' => 23 ]);
默认错误信息:{field_name} 字段必须是一个数值。
确定一个值是否是一个有效的电子邮件地址。
use Validator\Validator; $is_valid = (new Validator) ->email('field_name', 'value@example.com') ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'email' ]); $is_valid = $validator->validate([ 'field_name' => 'value@example.com' ]);
默认错误信息:{field_name} 字段必须是一个有效的电子邮件。
boolean
确定一个值是 true、false、0、1、"0" 或 "1"。
use Validator\Validator; $is_valid = (new Validator) ->boolean('field_name', $value = true) ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'boolean' ]); $is_valid = $validator->validate([ 'field_name' => true ]);
默认错误信息:{field_name} 字段必须是一个布尔值。
accepted
确定一个值是 true、1、"1" 或 "yes"。这对于确保人们接受你的网站上的条款和条件很有用。如果提供一个错误的值,此验证将失败。
当提供时,"yes" 将被解析为小写,以防你大写提供。
use Validator\Validator; $is_valid = (new Validator) ->accepted('field_name', $value = true) ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'accepted' ]); $is_valid = $validator->validate([ 'field_name' => true ]);
默认错误信息:{field_name} 字段必须被接受。
array
确定一个值是一个数组。内部使用 PHP 的 is_array 函数来确定其真实性。空数组被视为有效。添加 required 验证以禁止空数组。
use Validator\Validator; $is_valid = (new Validator) ->array('field_name', $value = ['value1', 'value2']) ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'array' ]); $is_valid = $validator->validate([ 'field_name' => ['value1', 'value2'] ]);
默认错误信息:{field_name} 字段必须是一个数组。
date
确定一个值可以被 PHP 的 strtotime 函数解析。
use Validator\Validator; $is_valid = (new Validator) ->date('field_name', $value = '2018-07-24 03:30:24') ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'date' ]); $is_valid = $validator->validate([ 'field_name' => '2018-07-24 03:30:24' ]);
默认错误信息:{field_name} 字段不是一个有效的日期。
afterDate:字符串
确定一个值是否在指定日期之后。该字符串参数可以是PHP的strtotime函数可以解析的任何值。
use Validator\Validator; $is_valid = (new Validator) ->afterDate('field_name', $value = '2018-07-25 03:30:24', $after_date = '2018-07-24 00:00:00') ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'afterDate:2018-07-24 00:00:00' ]); $is_valid = $validator->validate([ 'field_name' => '2018-07-25 03:30:24' ]);
默认错误信息:{字段名}字段值必须在{after_date}(yyyy-mm-dd hh:mm:ss)之后。
beforeDate:字符串
确定一个值是否在指定日期之前。该字符串参数可以是PHP的strtotime函数可以解析的任何值。
use Validator\Validator; $is_valid = (new Validator) ->beforeDate('field_name', $value = '2018-07-24 03:30:24', $before_date = '2018-07-25 00:00:00') ->validate();
或
use Validator\Validator; $validator = new Validator([ 'field_name' => 'beforeDate:2018-07-25 00:00:00' ]); $is_valid = $validator->validate([ 'field_name' => '2018-07-24 03:30:24' ]);
默认错误信息:{字段名}字段值必须在{before_date}(yyyy-mm-dd hh:mm:ss)之前。
许可协议
Validator遵循MIT许可协议 - 详细内容请参阅LICENSE文件。