noxkiwi/validator

我是一个验证库。

安装: 5

依赖: 4

建议: 0

安全: 0

星星: 0

关注者: 0

分支: 0

类型:package

dev-master 2020-07-09 00:00 UTC

This package is auto-updated.

Last update: 2024-09-16 11:34:33 UTC


README

错误的开端

在2016年,在我们初创公司忙碌的初期阶段,我们犯了一个关键的错误,这影响了我们的销售经理几个月的发票准备。我们错误地多次应用了净销售额的税计算,甚至在已经加成的基础上,导致重大错误。这个问题几个月都没有被发现,造成了相当大的麻烦。因此,我们开发了两个独立的库,以确保我们所有平台上的值都是有效的。

第一个承诺是通过创建Value库来确保整个项目中的参数有效。然后,作为一个逻辑上的结论,下一步是实现一个标准来规定如何验证数据。

// The scenario is real, but this example is much simplified, of course.
function createUser(array $request): void {
    // validate field by field...
}

Validator 💘 Value

Validator

  • 检查输入的完整性。
  • 返回一个或多个详细信息,说明为什么输入有问题。

Value

  • 只能使用有效的输入来构建。
  • 一旦构建,输入就是不可变的,确保在运行时保持完整性。

只是一个例子

当验证数据的完整性时,你不仅需要知道输入有问题,还需要非常详细的信息,说明为什么这个值实际上有问题。因此,我们在几乎处理用户输入的每个方法中都引入了validator结构。我们不仅需要验证数字。已经有一系列Validators。示例Validators

IbanValidator
EmailValidator
DomainValidator
ConnectionValidator
And many more...

以下是您可以使用这些Value对象的方式:如果您打算使用Validator堆栈来处理用户输入,您可以轻松完成这些事情

<?php declare(strict_types = 1);

namespace noxkiwi\validator;

use noxkiwi\validator\Interfaces\ValidatorInterface;

class MyController
{
    public function checkEmail(string $mailAddress): UserObject {
        $errors = EmailValidator::getInstance()->validate($mailAddress);
        if ($errors) {
            $this->response->send(Http::400, ErrorMessageBuilder::build($errors);
            return;
        }

        return UserTable::findUserForMail($mailAddress);
    }
}

class UserTable {
    public static function findUserForMail(string $mailAddress): UserObject
    {
// PSEUDO
    }
}

深入研究

另一方面,您还可以依赖我们集成了Validator堆栈的Value对象。这样,您可以确保方法findUserForMail将使用有效的输入调用,无需进一步验证。

class MyController
{
    public function checkEmail(string $mailAddress): UserObject {
        try {
           $mail = new EmailValue($mail);
           return UserTable::findUserForMail($mail);
        } catch (\Exception $e) {
            $this->response->send(Http::400, ErrorMessageBuilder::build($e));
        }
    }
}

class UserTable {
    public static function findUserForMail(EmailValue $mail): UserObject
    {
//PSEUDO
    }
}

接口方法

validate

public function validate(mixed $value, ?array $options = null): array;
  • 描述:验证给定的值,并返回一个错误数组。如果值有效,则数组为空。可以提供可选的验证选项。
  • 参数
    • mixed $value:要验证的值。
    • array|null $options:(可选)验证选项数组。
  • 返回: array - 错误数组。

isValid

public function isValid(mixed $value): bool;
  • 描述:将值发送到validate函数,如果错误数组为空,则返回true。
  • 参数
    • mixed $value:要验证的值。
  • 返回: bool - 如果值有效则返回true,否则返回false。

getErrors

public function getErrors(): array;
  • 描述:返回实例中存在的所有错误。
  • 参数:无。
  • 返回: array - 错误数组。

reset

public function reset(): Validator;
  • 描述:从Errorstack实例中删除任何错误。
  • 参数:无。
  • 返回: \noxkiwi\validator\Validator - Validator实例。

让我们联系!

如果您对合作的可能性感到兴奋,或者只是想讨论创新的想法,我非常愿意听到您的声音。不要犹豫,通过电子邮件与我联系。

让我们一起创造一些惊人的东西吧!