3

我按照六边形架构编写系统。

我在 UseCase 中有异步命令和同步查询对象。

我的 src 文件夹如下所示:

-src
--Entity
---Task.php
--UseCase
---Command
----CreateTask
-----CreateTaskUseCase.php
-----CreateTaskCommand.php

我的问题是:我可以/应该使用什么来通过构造函数中的命令发送数据UseCase\Command\CreateTask\CreateTaskCommand

  • \Entity\Task
  • 创建UseCase\Command\CreateTask\Request\Task将包含所有需要的数据
  • 只有字符串/整数/浮点数

这是显示问题的简单示例。

现在我正在使用域中的对象(Entiti\Task等)在实际情况下,我有UseCase\Command\CreateProcess这个需要

  • 用户界面
  • 实例[id,名称]
  • 来源[node_id,node_name,leaf_id,leaf_name]
  • Resource[id,name,type 等普通类型 Person[name,lastname]]

通过遵循 DDD,Process 是我的聚合。所有实体仅因构造 Process(Node,Leaf,Resource,Person) 而存在。然后我不想要单独的方式来创建其他实体,因为这种方式适用于我的业务逻辑。

由于这个问题,问题是:我应该选择什么?打破一些规则?

问题:

  • 将命令与域内部的对象绑定,将更高层更多地绑定到核心。核心的任何变化,都会与所有层发生连锁反应
  • 创建Request\*让我有很多课程,但使用命令的方式清晰,还有更多的工作 - unitTest 等。
  • 仅使用标准类型(int、string 等)将使 __counstruct 具有 20 个参数。我不想要多级数组,因为不会清楚使用这个命令。

感谢帮助。

4

1 回答 1

1

经过一段时间和经验 - 最好的选择是使用 PHP 的标准数据。最终,最好为该命令创建对象(第二个选项),但这会消耗时间来创建类和测试。

永远不要使用域中的东西 - 这是未来的巨大缺点。

于 2017-05-16T08:34:25.730 回答