andrzejkupczyk / ddd-generic-subdomain
支持统一实现DDD组件的接口
dev-master / 1.0.x-dev
2021-02-14 10:16 UTC
Requires
- php: ^7.4 || ^8.0
Requires (Dev)
- myclabs/deep-copy: ^1.10
Suggests
- beberlei/assert: Simplifies input validation
- myclabs/deep-copy: Allows to create deep copies of objects
This package is auto-updated.
Last update: 2024-09-14 17:48:20 UTC
README
本软件包提供接口,可用于支持在核心领域内统一实现DDD组件。它旨在作为现成解决方案,帮助避免模型拥堵,并强迫团队成员或您自己以不可变对象及其交互为思考方式。
所有实现都受到文献、由Nicolò Pignatelli创建的ValueObject库、SeedStack Java开发栈、ValueObjects工具包以及一些其他更直接来源的启发,但主要是我的经验和需求。
组件
文档是对弱者的,但代码中也有一些有用的信息。
值对象的不可变性
ValueObject
接口表示一个没有身份的不可变对象,然而在PHP中不可变性无法保证。目前,实现不可变性的唯一方法是通过封装,因此您可以使用ImmutableValueObject
代理类。
$year = new ImmutableValueObject(new Year(2020)); // or, using a helper function $year = immutable(new Year(2020));
代理值对象充当真实对象的替代品,但同时也增加了对其不可变性的信心。
最后,您还可以使用Psalm。
安装
使用Composer
composer require andrzejkupczyk/ddd-generic-subdomain