简化agnostic域对象的活化和提取

1.0 2020-03-29 17:36 UTC

This package is auto-updated.

Last update: 2024-09-06 21:26:36 UTC


README

Agnostic Domain Mapping

简化agnostic域对象的活化和提取

Static analysis Coding standard License

理由

根据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();

文档