khalyomede/validator

验证数组。

v0.4.0 2018-12-29 15:33 UTC

This package is auto-updated.

Last update: 2024-09-29 04:36:56 UTC


README

验证数组。

PHP from Packagist Packagist Codeship Packagist

$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)