glamorous/value-object

在您的应用程序中包含 ValueObjects 的接口。还提供了一个实现此接口的枚举。

2.0 2021-05-10 23:53 UTC

This package is auto-updated.

Last update: 2024-09-12 14:58:26 UTC


README

Latest Stable Version License PHP Version Build Status Codecov Scrutinizer Code Quality Total Downloads GitHub issues

PHP 接口,用于在项目中创建用于 ValueObjects。还提供了一个使用相同接口的抽象枚举类。

为什么?

ValueObjects 是在您的项目中使用的理想方式。您可以强制自己在项目中以所需的方式存储数据。

文档

接口

该接口有三个需要实现的方法。

  • __toString():此魔法方法用于将 ValueObject 表示为字符串。对日志记录很有用。
  • toNative():此方法必须返回一个数组、整数、字符串等。这需要用于测试两个 ValueObject 是否相同以及进行序列化。
  • equalsTo(ValueObject $object):此方法需要一个 ValueObject 实例。可以使用 toNative() 方法检查两个 ValueObject 是否相同。在枚举中,它使用父类的 equals 方法。

枚举

包含的枚举扩展了来自 MyCLabs 的枚举。此外,它还实现了接口。这样,就可以在应用程序中使用 toNative()equalsTo() 函数。更重要的是,枚举也是一个值对象,创建后不能更改。当所有这些类都实现相同的接口时,开发人员使用它们彼此之间就更容易了。

安装

您可以通过 composer 安装此包

$ composer require glamorous/value-object

使用

数量(接口示例)

大多数人会这样说:“这是一个整数,为什么我们需要值对象?”那么您应该再次阅读一些关于值对象的文章。


use Glamorous\ValueObject;

final class Amount implements ValueObject
{
    private $amount;

    public __construct(int $amount)
    {
        if ($amount < 0) {
            throw new \InvalidArgumentException('Amount must be above zero or zero');
        }

        $this->amount = $amount;
    }
}

状态(枚举示例)

use Glamorous\Enum;

final class Status extends Enum
{
    const OPEN = 'open';
    const CLOSED = 'closed';
}

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

测试

$ composer test

贡献

请参阅 CONTRIBUTING 了解详细信息。要查看贡献者列表: 所有贡献者

许可协议

MIT 许可协议(MIT)。请参阅 许可文件 了解更多信息。