tiny-blocks / value-object
定义了值对象的默认行为。
2.0.1
2023-06-17 14:53 UTC
Requires
- php: ^8.1||^8.2
Requires (Dev)
- infection/infection: ^0.26
- phpmd/phpmd: ^2.13
- phpunit/phpunit: ^9.6
- squizlabs/php_codesniffer: ^3.7
README
概述
值对象(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许可证。
贡献
请遵循贡献指南来为项目做出贡献。