Php UserService中是否允许使用emailExist方法?

Php UserService中是否允许使用emailExist方法?,php,pdo,domain-driven-design,ddd-repositories,ddd-service,Php,Pdo,Domain Driven Design,Ddd Repositories,Ddd Service,我正在使用领域驱动设计 我有以下模型(类): 使用者 用户道 用户存储库 用户服务 我知道UserService应该包含所有相应的应用程序逻辑。所以我在那里找到了像signUp(),logIn()和update()这样的方法 MysignUp()方法,为用户注册,但在违反电子邮件唯一性约束时引发PDO异常。现在,由于异常只针对异常错误,对控制流不利,我的问题是: 是否允许在UserService类中使用emailExist()方法? 因此,在实际注册用户之前,我可以在我的控制器中首先调用它(

我正在使用领域驱动设计

我有以下模型(类):

  • 使用者
  • 用户道
  • 用户存储库
  • 用户服务
我知道UserService应该包含所有相应的应用程序逻辑。所以我在那里找到了像
signUp()
logIn()
update()
这样的方法

My
signUp()
方法,为用户注册,但在违反电子邮件唯一性约束时引发PDO异常。现在,由于异常只针对异常错误,对控制流不利,我的问题是:

是否允许在UserService类中使用
emailExist()
方法?


因此,在实际注册用户之前,我可以在我的控制器中首先调用它(这样,如果电子邮件已经存在,我就可以报告表单错误)。我知道这种方法实际上属于数据映射器,但由于它们不应该直接用于控制器,我考虑将其添加到我的UserService类中,然后将其映射到存储库的
findByEmail()
方法。

系统经常公开命令和查询。注册、登录和更新是命令。FindByEmail是一个查询

用户界面用于尝试并引导用户编写有效的命令。检查用户界面中是否已经存在电子邮件可以向用户提供更好的反馈——允许用户在发送命令之前更正命令


一旦您尽了最大努力引导用户,您就可以让您的命令抛出一个异常,而无需以干净的方式处理它,因为您达到这一程度的机会现在非常小。

不确定您是从哪里得到异常仅用于“异常错误”的想法的。异常非常适合在不使用out和ref参数的情况下向调用者报告与预期执行流的任何偏差。您可以为您需要的任何回退方案指定粒度异常,并仅处理这些异常,重新抛出任何其他异常。这个“其他任何东西”都将是你的“异常错误”流程。很抱歉,我对你对我问题的回答有点困惑。你是说没事,还是。。?