macfja/validator

该包的最新版本(dev-master)没有可用的许可证信息。

Validator是一种简单的方式来验证属性或对象。

dev-master 2015-06-14 11:37 UTC

This package is auto-updated.

Last update: 2024-09-17 00:51:27 UTC


README

Validator是一种简单的方式来验证属性或对象。

特性

  • 可以与注解一起工作
  • 易于创建自己的验证器
  • 如果兼容,验证器可以提供您值/对象的清洁版本

安装

Composer

composer require macfja/validator @dev

示例

验证一个值

$myValue = '2014-09-02';
$validator = new LowerThan();
$validator->value = new \DateTime('2012-07-01');
$validator->type = 'date';
$validator->setInput($myValue);

if ($validator->isValid()) {
    die('Houston, we\'ve had a problem');
} else {
    die('You are too old for that');
}

验证一个对象(方法1)

类 Person

class Person {
    public $firstName = 'John';
    public $lastName = 'Doe';
    public $email = 'jdoe@example.com';
    public $dob;
}

在您的代码中的某处

$jdoe = new Person();
$objectValidator = new ObjectValidator($jdoe);

// - Names validator
$validator1 = new Length();
$validator1->type = 'string';
$validator1->minimum = 1;
$validator1->maximum = 255;//SQL limit?
// - email validator
$validator2 = new Email();
// - age
$validator3 = new DateTime();
$validator4 = new LowerThan();
$validator4->value = '-18 years';
$validator4->type = 'date';

$objectValidator->addValidator('firstName', $validator1);
$objectValidator->addValidator('lastName', $validator1);
$objectValidator->addValidator('email', $validator2);
$objectValidator->addValidator('dob', $validator3);
$objectValidator->addValidator('dob', $validator4);

if (!$objectValidator->isValid()) {
    var_dump($objectValidator->getErrors());
}

验证一个对象(方法2 - 注解)

类 Person

use MacFJA\Validator\Annotation as Validator

class Person {
    /** @Validator\Length(type="string", minimum=1, maximum=255) */
    public $firstName = 'John';
    /** @Validator\Length(type="string", minimum=1, maximum=255) */
    public $lastName = 'Doe';
    /** @Validator\Email */
    public $email = 'jdoe@example.com';
    /**
      * @Validator\DateTime
      * @Validator\LowerThan("-18 years", type="date")
      */
    public $dob;
}

在您的代码中的某处

$jdoe = new Person();
$objectValidator = new AnnotationValidator($jdoe);

if (!$objectValidator->isValid()) {
    echo sprintf("You have %d error(s) in your object", $objectValidator->getErrorsCount());
}

关于注解的注意事项

对于注解验证器,您必须

  • 在您的项目中添加 Doctrine Annotations 库(doctrine/annotations)。
  • 将所有注解添加到 Doctrine 注解注册表中。

您必须在使用之前添加所有注解。

为此,您可以调用函数 AnnotationValidator::registerAnnotations()。此函数将所有默认验证器注解添加到 doctrine 注解注册表中。