khalyomede/validator
验证数组。
v0.4.0
2018-12-29 15:33 UTC
Requires
- php: >=7.2.0
- khalyomede/array-get: 0.*
Requires (Dev)
- phpunit/phpunit: 7.*
README
验证数组。
$validator = new Validator([ 'name' => ['required', 'string'], 'hobbies' => ['array'], 'hobbies.*' => ['string'] ]); $validator->validate([ 'name' => 'John', 'hobbies' => ['programming', 'comics', 'workout'] ]); var_dump($validator->failed()); // false
摘要
安装
在项目根目录下
composer require khalyomede\validator:0.*
示例
示例 1:验证字符串
require __DIR__ . '/../vendor/autoload.php'; use Khalyomede\Validator; use Khalyomede\Exception\RuleNotFoundException; $validator = new Validator([ 'name' => ['string'] ]); try { $validator->validate(['name' => 'John']); var_dump($validator->failed()); // false } catch( RuleNotFoundException $exception ) { echo "rule {$exception->getRule()} does not exists"; exit(1); }
示例 2:验证必需元素
require __DIR__ . '/../vendor/autoload.php'; use Khalyomede\Validator; use Khalyomede\Exception\RuleNotFoundException; $validator = new Validator(['name' => ['required', 'string']]); try { $validator->validate(['name' => 'John']); var_dump($validator->failed()); // false } catch( RuleNotFoundException $exception ) { echo "rule {$exception->getRule()} does not exist"; exit(1); }
示例 3:添加新规则
equire __DIR__ . '/../vendor/autoload.php'; use Khalyomede\Validator; use Khalyomede\Exception\RuleAlreadyExistException; use Khalyomede\Exception\RuleNotFoundException; try { Validator::extends('longitude', function($value, $key, $items) { return is_float($value) && ($value >= -180) && ($value <= 180); }); } catch( RuleAlreadyExistException $exception ) { echo "rule {$exception->getRule()} already exist"; exit(1); }
示例 4:检查规则是否已存在
require __DIR__ . '/../vendor/autoload.php'; use Khalyomede\Validator; if (Validator::has('ip') === false) { echo "rule ip does not exist yet"; }
示例 5:使用点语法验证多个元素
require __DIR__ . '/../vendor/autoload.php'; use Khalyomede\Validator; $validator = new Validator([ 'sith' => ['required', 'array'], 'sith.*' => ['string'] ]); $validator->validate([ 'sith' => ['Darth Maul', 'Darth Vador', 'Darth Sidious'] ]); var_dump( $validator->failed() ) // "false", hm... should have been true after all these guys did but anyway
规则
数组
验证键是否为数组。
$validator = new Validator([ 'hobbies' => ['array'] ]);
日期
验证键是否填充了格式为 yyyy-mm-dd 的有效日期(ISO 8601)。
$validator = new Validator([ 'created_at' => ['date'] ]);
日期时间
验证键是否填充了格式为 yyyy-mm-dd hh:mm:ss 的有效日期时间(ISO 8601)。
$validator = new Validator([ 'updated_at' => ['datetime'] ]);
电子邮件
验证键是否填充了电子邮件。
$validator = new Validator([ 'contact' => ['email'] ]);
填充
验证键是否填充了非空值。
$validator = new Validator([ 'name' => ['filled'] ]);
整数
验证键是否填充了整数。
$validator = new Validator([ 'age' => ['integer'] ]);
小写
验证键是否填充了仅包含小写字母(也允许非字母字符)。
$validator = new Validator([ 'street' => ['lower'] ]);
存在
验证键是否存在。
$validator = new Validator([ 'lastname' => ['present'] ]);
必需
验证键是否存在。键可以是空的。
$validator = new Validator([ 'name' => ['required'] ]);
相同
验证两个键是否相同。
$validator = new Validator([ 'password' => ['string', 'same:confirmation'], 'confirmation' => ['string'] ]);
短横线
验证字符串是否为短横线(只允许小写字母和短横线 -)。
$validator = new Validator([ 'title' => ['slug'] ]);
字符串
验证键是否为字符串。
$validator = new Validator([ 'name' = ['string'] ]);
时间
验证键是否填充了格式为 hh:mm:ss 的时间。
$validator = new Validator([ 'duration' => ['time'] ]);
大写
验证字符串是否全部为大写。
$validator = new Validator([ 'name' => ['upper'] ]);
辅助函数
扩展
添加新规则。
Validator::extends('jedi', function($value, $key, $items) { return in_array($value, ['qui-gon jinn', 'obiwan', 'luke']); });
有
检查规则是否已存在。
Validator::has('sith'); // bool(false)