php - 我应该指挥什么对象?

标签 php command hexagonal-architecture clean-architecture

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

我在用例中拆分了异步命令和同步查询对象。

我的 src 文件夹看起来像:

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

我的问题是:在 UseCase\Command\CreateTask\CreateTaskCommand

的构造函数中,我可以/应该使用什么来通过命令发送数据
  • \Entity\Task
  • 创建包含所有需要数据的 UseCase\Command\CreateTask\Request\Task
  • 只有字符串/整数/ float

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

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

  • 用户标识符
  • 实例[id, 名称]
  • 来源[node_id, node_name, leaf_id, leaf_name]
  • 资源[id,name,type etc. normal types Person[name,lastname]]

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

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

问题:

  • 将命令与域内部的对象绑定(bind),会将更高层更多地绑定(bind)到核心。核心的任何变化都会对所有层产生链式 react
  • 创建 Request\* 让我有很多类,但清晰的命令使用方式,以及更多工作 - unitTest 等。
  • 仅使用标准类型(整数、字符串等)将使 __counstruct 具有 20 个参数。我不想要多级数组,因为不会清楚使用此命令。

感谢您的帮助。

最佳答案

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

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

关于php - 我应该指挥什么对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40018103/

相关文章:

php - 查询仅返回 9 个期望值中的 7 个

linux - 这些命令的含义和作用是什么?

python - 使用 python 中的 ruby​​ gem/命令

java - DDD - java 9 模块项目组织

PHP MySQL 未定义索引等错误

php - 如何通过ajax发送JSON数组?

command - 如何在linux服务器中使用 "rm -R"命令恢复被删除的文件?

java - 使用 Cucumber 进行回归组件测试。应该测试的层是否有边界?

domain-driven-design - DDD - 管理域和存储库之间的耦合

php - Wordpress - 首先查询自定义帖子类型的名称