runner/validator

v1.0.1 2019-03-04 07:42 UTC

README

Lightweight Validation Like Laravel

68747470733a2f2f7472617669732d63692e6f72672f52756e6e65724c65652f76616c696461746f722e7376673f6272616e63683d6d6173746572 68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f52756e6e65724c65652f76616c696461746f722f6261646765732f636f7665726167652e706e673f623d6d6173746572 68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f52756e6e65724c65652f76616c696461746f722f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572 StyleCI 68747470733a2f2f706f7365722e707567782e6f72672f72756e6e65722f76616c696461746f722f762f737461626c65 68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344352e362d3838393242462e737667 68747470733a2f2f706f7365722e707567782e6f72672f72756e6e65722f76616c696461746f722f6c6963656e7365

使用

<?php
use Runner\Validator\Validator;

// 增加规则扩展
Validator::addExtension(
    'channel',
    function ($field, $value, array $parameters = []) {
        return false !== array_search($value, ['google', 'bing']);
    },
    false
);

$data = [
    'blog' => 'https://github.com/RunnerLee',
];
$rule = [
    'blog' => 'required|url',
];
$validator = new Validator($data, $rule);

var_dump($validator->validate()); // output: true

// 获取错误消息
$validator->messages();

内置验证规则

  • accept:字段的取值范围必须是:yes、on、'1'、1、true 中的一个
  • numeric:字段的值必须是数字(包括整形和浮点数)
  • integer:字段的值必须是整形
  • float:字段的值必须是浮点型
  • size:字段的值必须为指定长度
  • url:字段的值必须是合法的 url 类型
  • boolean:字段的值必须是布尔类型
  • confirm:字段的值必须与指定值相等
  • date:字段的值必须是一个合法的日期
  • email:字段的值必须是一个合法的 email
  • required:必须包含该字段
  • requiredWith:如果指定的字段中的任意一个有值且不为空,则此字段为必填
  • requiredWithout:如果缺少任意一个指定的字段,则此字段为必填
  • requiredIf:如果指定的其它字段(anotherfield)等于任何一个 value 时,此字段为必填
  • array:字段的值必须是数组类型
  • string:字段的值必须是字符串类型
  • min:字段的值必须大于等于指定值
  • max:字段的值必须小于等于指定值
  • range:字段的值长度必须指定范围内,包含 min 和 max。
  • regex:字段的值必须匹配指定的正则表达式
  • in:字段的值必须在指定的数组内
  • ip:字段的值必须是一个合法的 ip
  • dateFormat:字段的值必须是一个合法的 date format 格式。参考:http://php.net/manual/en/datetime.createfromformat.php
  • dateBefore:字段的值必须小于给定时间。给定时间值非时间戳格式,而是 date/time 字符串,如:10 September 2000
  • dateAfter:字段的值必须大于给定时间。时间值格式同上。
  • json:字段的值必须是一个合法的 JSON 格式

Note

关于空字符串

如果传入一个数组:

$data = [
    'foo' => '',
];

同时规则设置为:

$rules= [
    'foo' => 'string',
];

此时校验结果会是通过的. 也就是说 validator 不会把 '' 当作 null 处理.

参考

https://github.com/vlucas/valitron

https://github.com/illuminate/validation