tiny-blocks/value-object

定义了值对象的默认行为。

2.0.1 2023-06-17 14:53 UTC

This package is auto-updated.

Last update: 2024-09-22 13:00:17 UTC


README

License

概述

值对象(VO)是一种不可变类型,它仅通过其属性的状态来区分,也就是说,与具有唯一标识符并保持独立性的实体不同,即使属性相同,具有相同属性的VO也可以被认为是相同的。

由于它们是不可变的,一旦创建VO就不能更改。修改一个VO在概念上等同于丢弃旧的VO并创建一个新的VO。

有关VO的更多详细信息,请参阅VOs

安装

composer require tiny-blocks/value-object

如何使用

该库通过ValueObject接口公开可用行为,并通过ValueObjectAdapter特质实现这些行为。

具体实现

通过实现ValueObject接口和ValueObjectAdapter特质,抑制了__get__set__unset方法的使用,使对象不可变。

<?php

namespace Example;

use TinyBlocks\Vo\ValueObject;
use TinyBlocks\Vo\ValueObjectAdapter;

final class TransactionId implements ValueObject
{
    use ValueObjectAdapter;

    public function __construct(private readonly string $value)
    {
    }
}

使用equals方法

equals方法比较两个VO的值,并检查它们是否相等。

$transactionId = new TransactionId(value: 'e6e2442f-3bd8-421f-9ac2-f9e26ac4abd2');
$otherTransactionId = new TransactionId(value: 'e6e2442f-3bd8-421f-9ac2-f9e26ac4abd2');

$transactionId->equals(other: $otherTransactionId); # 1 (true)

许可证

值对象遵循MIT许可证。

贡献

请遵循贡献指南来为项目做出贡献。