【发布时间】:2014-07-17 07:16:46
【问题描述】:
我正在使用领域驱动设计。
我有以下模型(类):
- 用户
- 用户DAO
- 用户存储库
- 用户服务
我知道 UserService 应该包含所有相应的应用程序逻辑。所以我得到了像signUp()、logIn()和update()这样的方法。
我的signUp() 方法,注册用户,但在违反电子邮件唯一约束时抛出 PDO 异常。现在,由于异常仅适用于 exceptional 错误并且不利于控制流,我的问题是:
是否允许在 UserService 类中使用 emailExist() 方法?
所以我可以先在我的控制器中调用它(如果电子邮件已经存在,我可以报告表单错误),然后再实际注册用户。我知道这种方法实际上属于数据映射器,但由于它们不应该直接在控制器中使用,我考虑将它添加到我的 UserService 类中,然后从那里将它映射到我的存储库的 findByEmail() 方法。
【问题讨论】:
-
不知道你从哪里得到异常仅用于“异常错误”的想法。在不使用 out 和 ref 参数的情况下,异常非常适合将与预期执行流程的任何偏差报告给调用者。您可以为您需要的任何回退方案指定细粒度的异常,并仅处理这些异常,重新抛出其他任何异常。而这个“其他”将是您的“异常错误”流程。
标签: php pdo domain-driven-design ddd-repositories ddd-service