php - 在使用 CQRS 的情况下从另一个命令调用一个命令

标签 php cqrs

我正在使用 CQRS 开发应用程序。我有一个案例让我有点困惑。

我有一个命令 CreateUser。现在我必须创建命令 ImportUsers。我想这些命令的目的很明确。所以有两种选择:

  1. 从 ImportUsers 命令调用 CreateUser 命令。
  2. 在 ImportUsers 命令中进行一些复制/粘贴,以从头开始执行所有操作。

最佳做法是什么?先感谢您。

最佳答案

您将逻辑放在错误的位置,这就是导致问题的原因。命令旨在成为领域逻辑的协调者。换句话说,他们在领域中调用适当的方法来完成他们的工作,而不是他们自己做。

创建单个用户的逻辑属于每个方法调用的工厂。工厂应该有一个 CreateUser 方法,它接受所有数据作为参数,或者如果有超过 5 个左右的参数,我假设有,则接受 DTO。使用工厂创建用户,这两个命令的唯一区别是 ImportUsers 将循环调用工厂的 CreateUser 方法。

检查 this posting关于命令背后的想法。如果您使用的是 DDD,请阅读 Udi Dahan's post关于所有对象的创建应该如何在某处的某个聚合上的方法中。

关于php - 在使用 CQRS 的情况下从另一个命令调用一个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50667965/

相关文章:

php - 在 SELECT 查询的情况下,我应该担心 sql 注入(inject)吗

php - 单例结构

domain-driven-design - CQRS 对我的域是否正确?

translation - CQRS、事件溯源和翻译的应用程序

domain-driven-design - 每个属性应该有一个更新事件,还是每个具有事件源的实体都有一个更新事件?

php - mysql 查询未返回正确的百分比

php - 使用 PHP 和 MySQL 提交多个复选框以及文本框输入值?

domain-driven-design - 当列表中存在不变量时定义聚合根

PHP-MySQL : How to allow the execution of a huge insert query with more than 40, 000 行

rest - CQRS 和 REST HATEOAS 不匹配