2016-10-13 49 views
2

我写作系统遵循六边形结构。我应该掌握什么对象?

我在UseCase中分割了异步命令和同步查询对象。

我src文件夹的样子:

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

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

  • \Entity\Task
  • 数据创建UseCase\Command\CreateTask\Request\Task那会拥有所有需要的数据
  • only string/int/float

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

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

  • UUID
  • 实例[ID,名称]
  • 来源[NODE_ID,节点名,leaf_id,leaf_name]
  • 资源[ID,名称,类型等正常类型人【名,姓氏]]

通过遵循DDD,Process是我的聚合。所有实体仅存在于构造过程(节点,叶子,资源,人员)。然后,我不想单独的方式来创建其他实体,因为这种方式符合我的业务逻辑。

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

问题:

  • 与对象绑定命令从内域,将结合更高层更向芯。在核心的任何变化,都会链所有层
  • 创建Request\*让我很多类,但用命令的明确的方式,以及更多的工作作出反应 - 单元测试等
  • 只使用标准型(INT,字符串等。 )将使__counstruct有20个参数。我不想要多级数组,因为不会清楚使用这个命令。

感谢您的帮助。

+1

Ddd主要是关于您的业务走过的旅程和结构。我怀疑他们谈论的是一个用例/流程/任务结构,但更多的是关于一个人的事情。另请参阅valueetypes。捆绑参数 – Batavia

+1

你是对的,将删除DDD标签:) – timiTao

+0

回滚你的编辑,因为你已经添加了相同的文字到你的问题和你的答案。 – kayess

回答

1

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

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