noahlvb/valueobject

一个用于启动域驱动设计 valueObjects 使用的 PHP 库

v1.0.2 2022-04-30 19:51 UTC

This package is auto-updated.

Last update: 2024-09-29 05:29:08 UTC


README

一个用于启动域驱动设计 valueObjects 使用的库

CI Latest Stable Version License

安装

使用 composer,添加

$ composer require noahlvb/valueobject

或者如果您使用 Symfony:valueobject-bundle

$ composer require noahlvb/valueobject-bundle

运行测试

为了确保一切正常工作,您可以运行测试

$ make test

如何使用

目前支持两种原始类型

  • 字符串:ValueObjectString
  • 整数:ValueObjectInteger

创建一个不带检查的简单值对象。

class Name extends ValueObjectString
{
    protected function sanitize(string $value): string
    {
        return trim($value);
    }

    public function isValid(string $value): bool
    {
        return true;
    }
}

如果您想在值对象的构建过程中验证值,只需覆盖 isValid 方法进行您的检查

class Name extends ValueObject
{
    protected function sanitize(string $value): string
    {
        return trim($value);
    }

    public function isValid(string $value): bool
    {
        return strlen($value) < 255;
    }
}

如果您想在构建过程中抛出自定义异常,覆盖 getException 方法以使用您自己的异常

class Name extends ValueObject
{
    protected function sanitize(string $value): string
    {
        return trim($value);
    }

    public function isValid(string $value): bool
    {
        return strlen($value) < 255;
    }

    protected function getException(): Exception
    {
        return new NameToLongException();
    }
}

示例

示例实现可以在 tests/Unit/ValueObject 中找到。这些是用于测试的相同值对象