alexya-framework/validator

Alexya的验证器工具

安装: 30

依赖: 0

建议: 1

安全性: 0

星级: 0

关注者: 2

分支: 0

开放问题: 0

类型:框架

3.0.5 2017-06-05 13:53 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:25:45 UTC


README

Alexya的验证器组件

内容

验证器

\Alexya\Validator\Validator 提供了验证输入的辅助函数。

您需要实例化一个 Validator 对象,添加要验证的字段,并调用 validate 方法。

实例化验证器对象

构造函数可以接受一个包含 \Alexya\Validator\Ruler 对象的数组作为参数。您也可以使用 addRuler 方法添加新的规则。

示例

<?php

$validator = new \Alexya\Validator\Validator([
    new \Alexya\Validator\Rulers\StringRuler(),
    new \Alexya\Validator\Rulers\IntegerRuler()
]);

$validator->addRuler(new \Alexya\Validator\Rulers\GenericRuler());

添加字段

要添加字段,请使用接受字段名和其值作为参数的 add 方法,它返回一个类型为 \Alexya\Validator\Field 的对象,该对象是 字段

验证

一旦添加了所有字段,请使用 validate 方法验证字段。如果发送了字符串作为参数,它将验证具有该名称的字段,如果没有,它将验证所有字段。如果所有字段都成功验证,则返回 true,否则返回 false

getErrors 方法返回一个包含验证错误的数组。

示例

<?php

$validator = new \Alexya\Validator\Validator([);
$validator->addRuler(new \Alexya\Validator\Rulers\GenericRuler());
$validator->addRuler(new \Alexya\Validator\Rulers\StringRuler());

$validator->add("username", "test")
          ->addRule("String::required", "Please, enter your username")
          ->addRule("String::min_length", [3], "Your username can't be less than 3 chars")
          ->addRule("String::max_length", [20], "Your username can't be more than 20 chars")
          ->addRule("String::not_contains_chars", ["#$!\\"], "Your password can't contain special chars");
$validator->add("password", "asdf123")
          ->addRule("String::required", "Please, enter your password")
          ->addRule("String::min_length", [3], "Your password can't be less than 3 chars");

if($validator->validate()) {
    echo "All input has been successfully validated"
} else {
    $messages = $validator->getErrors();

    echo "Couldn't validate inputs!";
    foreach($messages as $message) {
        echo $message;
    }
}

字段

\Alexya\Validator\Field 表示要验证的字段。

实例化字段对象

构造函数接受要验证的字段作为参数。

添加规则

您可以使用接受三个参数的 addRule 方法添加验证规则

  • 一个字符串作为规则名称。
  • 一个包含要发送给规则的参数的数组(可以省略)。
  • 一个字符串作为字段不满足规则时的错误信息。

此方法返回此对象的实例,以便链式调用。

验证字段

一旦添加了所有规则,请使用 validate 方法验证字段。它接受包含验证规则的规则对象作为参数,如果验证成功则返回 true,如果失败则返回 false

getErrors 方法返回一个包含验证错误的数组。

示例

<?php

$field = new Field("test");
$field->addRule("String::not_empty", "The string can't be empty!");
      ->addRule("String::min_length", [4], "The string can't be shorter than 4 chars!");
      ->addRule("String::max_length", [20], "The string can't be longer than 20 chars!");
      ->addRule("String::matches", ["([0-9A-Z]*)"], "The string must have only numbers and letters!");

if(!$field->validate()) {
    echo implode("\n", $field->getErrors());
}

规则

\Alexya\Validator\Ruler 是所有规则的基类。

规则是一个包含验证输入方法的对象。

字符串规则

\Alexya\Validator\Rulers\StringRuler 包含字符串的验证规则。

验证规则

所有规则都可以以 String:: 开头。

示例

<?php

$ruler = new \Alexya\Validator\Rulers\StringRuler();

var_dump($ruler->validate("String::not_empty", ""));      // bool(false);
var_dump($ruler->validate("min_length", "test", [4]));    // bool(true);
var_dump($ruler->validate("String::is_ip", "127.0.0.1")); // bool(true);

整数规则

\Alexya\Validator\Rulers\IntegerRuler 包含整数的验证规则。

验证规则

所有规则都可以以 Integer:: 开头。

示例

<?php

$ruler = new \Alexya\Validator\Rulers\IntegerRuler();

var_dump($ruler->validate("Integer::less_than", 20, [40]));   // bool(false);
var_dump($ruler->validate("more_than", 30, [4]));             // bool(true);
var_dump($ruler->validate("Integer::between", 40, [4, 400])); // bool(true);