ayeo/validator

通用且独立的验证器

1.2.6 2021-02-25 11:25 UTC

This package is auto-updated.

Last update: 2024-09-25 19:30:30 UTC


README

独立的库允许简单验证其他对象

安装

使用composer

composer require ayeo/validator

示例对象

让我们考虑以下简化对象

class Company
{
    /** @var Address */
    private $address;
    
    /** @var string */ 
    public $name;
    
    /** @var Address */
    public function getAddress()
    {
        return $this->address();
    }
}
class Address
{
    /** @var string */ 
    public $street;
    
    /** @var string */ 
    public $town;
    
    /** @var string */ 
    public $countries;
    
}

验证规则

要处理验证,我们需要定义我们的规则

use Ayeo\Validator\ValidationRules

class CompanyValidationRules extends ValidationRules
{
    public function getRules()
    {
        return
        [
            ['company',
                [
                    ['name', new MinLength(5)],
                    ['address',
                        ['street', new MinLength(5)],
                        ['town', new MinLength(5)],
                        ['country', new OneOf(['USA', 'UK', 'Poland'])]
                    ]
                ] 
        ];            
    }
}

它并不太复杂,但效果很好。正如你所见,我们能够验证嵌套对象。验证器足够智能,可以获取私有和受保护属性(如果我们有getter)。验证器使用

$company = new Company;
$company->name = "Test Company";

$validator = new Validator(new CompanyValidationRules);
$isValid = $validator->validate($company);
$errors = $validator->getErrors();

默认值

版本1.2引入了默认值支持。为了设置默认值,您需要将其作为第三个参数传递。如果字段值为null,则将使用默认值。请注意,默认值仍然是进一步验证的对象 - 如果您设置了无效的默认值,它将导致错误

use Ayeo\Validator\ValidationRules

class CompanyValidationRules extends ValidationRules
{
    public function getRules()
    {
        return [['company', [['name', new MinLength(5), "Unknown name"]]];            
    }
}

允许null

默认情况下,给定的验证器将跳过对null值的检查。当然,您需要检查其中一些null值。如果约束类实现了CheckNull接口,验证器将强制检查字段,即使它是null。目前,NotNull约束就是这样一种类型。

可用的约束

  • 长度
  • MinLength
  • MaxLength
  • 整数
  • 数字
  • NumericMin
  • NumericMax
  • NotNull
  • NonEmpty
  • ArrayOfType
  • IsArray
  • ClassInstance
  • NotClassInstance
  • LowerThanField
  • NoWhitespace
  • Email

随时添加更多!