crodas/validator

v0.2.2 2016-03-25 05:23 UTC

This package is auto-updated.

Last update: 2024-09-12 18:51:50 UTC


README

生成静态验证器,以在PHP中验证数据。静态表示规则在离线时定义,然后库生成代码以执行验证。我们不进行任何运行时检查。

如果您需要动态定义验证规则,例如您有一个CMS或其他类似的东西,那么这个库可能用处不大(除非您手动调用crodas\Validator\Builder),在这种情况下,我建议您查看@Respect的验证库,该库是此库的灵感来源。

如何安装

安装此包的最简单方法是使用Composer

composer "crodas/validator":\*

如何使用它

我们的对象

所有验证规则都使用注解定义,它应该是这样的

/** @Validate */
class User
{
    /** @Between([18, 99], "Invalid age range, it should be between 18-99") */ 
    protected $age;
    
    /** 
     * @NoWhitespace("Spaces are not allowed")
     * @MinLength([5], "{$value} is too short") 
     * @MaxLength([10], "{$value} is too long")
     */
    public $username;
}

简单方法

您只需调用crodas/Validator/validate函数,它将处理其他所有事情。

$user = new User;
$user->age = 17;
$user->username = "invalid username";
if (!crodas\Validator\validate($user, $errors)) {
    echo "<h1>There has been an error</h1>";
    foreach ($errors as $property => $error) {
        echo "...\n";
    }
    exit;
}

困难方法

您还可以通过读取给定目录中的PHP文件来生成验证对象。此项目公开了其引擎和编译,因此这可以非常容易地完成。您必须做的第一件事是创建验证器对象。

require "vendor/autoload.php";

$val = new crodas\Validator\Init("/classes/", "/tmp/foo.php");

验证器对象将首先在/classes/及其子目录中查找定义的类。然后它将加载带有@Validate注解的类。

要验证一个对象,您必须执行如下操作。

$errors = $val->validate(new User);
if (!empty($errors)) {
  foreach ($errors as $field => $exception) {
     echo "{$field} is not valid ( {$exception} )\n";
  }
}