agnostic-domain / mapping
简化agnostic域对象的活化和提取
1.0
2020-03-29 17:36 UTC
Requires
- php: ^7.4
Requires (Dev)
- doctrine/orm: ^2.7.1
- friendsofphp/php-cs-fixer: ^2.16.1
- phpstan/phpstan: ^0.12.14
- phpunit/phpunit: ^9.0.1
- ramsey/uuid: ^3.9.3
This package is auto-updated.
Last update: 2024-09-06 21:26:36 UTC
README
简化agnostic域对象的活化和提取
理由
根据DDD,领域应该对外部约束保持不可知。大多数ORM为了正常工作会施加约束,即使更好的ORM也无法摆脱对象关系阻抗不匹配的问题。假设你正在排除事件源和其他替代方案(无论出于什么原因),但仍想使用ORM并拥有干净的领域,你需要将它们解耦。这种解耦伴随着两层之间的映射成本。这个库的目标不是通过魔法和另一套框架约束来消除这种成本,而是要最小化。
关键思想
- 通过反射实现活化和提取。
- 领域构造函数应该反映创建新模型,而不是恢复它的数据。
- 对象可以多对多映射。
- 领域不应与数据库表耦合。
安装
composer require agnostic-domain/mapping
入门
将数据对象映射到领域对象
$article = adm(Article::class) ->id($data->id) ->title($data->title)($data);
反向映射领域对象到数据对象
$data = adm()->data($article); $data->title = adm($article)->title();