caridea/validate

一个验证库的小虾米

3.0.0 2018-01-28 20:10 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:53:37 UTC


README

Caridea 是一个微小的 PHP 应用程序库。这个小虾米是你只需要一些帮助而不需要完整框架时使用的。

这是它的验证库。

它支持 LIVR 规则,但有例外。见下面的合规性 → LIVR 部分。

Packagist Build Status Scrutinizer Code Quality Code Coverage Documentation Status

安装

您可以使用 Composer 安装此库

$ composer require caridea/validate
  • 此项目的 master 分支(版本 3.x)需要 PHP 7.1,没有依赖项。
  • 此项目的 2.x 版本需要 PHP 7.0,没有依赖项。
  • 此项目的 1.x 版本需要 PHP 5.5,没有依赖项。

文档

合规性

此库的发布将符合 语义版本控制

我们的代码旨在符合 PSR-1PSR-2PSR-4。如果您发现任何与标准合规性相关的问题,请发送拉取请求!

LIVR

我们完全支持 LIVR 规范定义的 JSON 规则格式。但是,我们不支持 v0.4 样式的 one_oflist_of 规则声明。

在大多数情况下,我们支持规范 2.0 版本中定义的所有规则及其返回代码,但有显著的例外。我们没有实现以下规则

  • trim – 这是过滤的一部分,而不是验证。
  • to_lc – 这是过滤的一部分,而不是验证。
  • to_uc – 这是过滤的一部分,而不是验证。
  • remove – 这是过滤的一部分,而不是验证。
  • leave_only – 这是过滤的一部分,而不是验证。
  • default – 这是过滤的一部分,而不是验证。
  • or – 这是实验性的。

我们现在支持别名定义!

我们添加了一个额外的验证器:timezone!如果提供的字符串不是一个有效的时区标识符,它将返回错误 WRONG_TIMEZONE

示例

要从规则集创建验证器,您可以将定义传递给构建器,或者可以使用构建器进行过程化操作。

// rules.json
{
    "name": "required",
    "email": ["required", "email"],
    "drinks": { "one_of": [["coffee", "tea"]] },
    "phone": {"max_length": 10},
}
$registry = new \Caridea\Filter\Registry();
$builder = $registry->builder();
$ruleset = json_decode(file_get_contents('rules.json'));
$validator = $builder->build($ruleset);
$registry = new \Caridea\Filter\Registry();
$builder = $registry->builder();
$validator = $builder->field('name', 'required')
    ->field('email', 'required', 'email')
    ->field('drinks', ['one_of' => [['coffee', 'tea']]])
    ->field('phone', ['max_length' => 10])
    ->build();

您可以选择检查验证结果,或者抛出一个包含任何错误的异常。

$input = [
    'foo' => 'bar',
    'abc' => '123',
];
$result = $validator->validate($input);
// or
$validator->assert($input);

您可以在 Registry 中注册自己的自定义规则。

$registry = new \Caridea\Validate\Registry();
$registry->register([
    'credit_card' => ['MyCustomRules', 'getCreditCard'], // a static method
]);