【问题标题】:Symfony event vs serviceSymfony 事件与服务
【发布时间】:2018-11-20 11:36:31
【问题描述】:

您好,我有一个关于 symfony 应用程序架构的问题, 在我的应用程序中,我创建了不同的用户,但是当创建、更新、删除用户或更改他的图片时,我需要执行一些操作。

最好的方法是什么?我排除在控制器操作上执行此操作。还有其他 2 个解决方案:

  • 创建不同的事件,如 user.created、user.updated... 并在控制器操作上分派它并让不同的侦听器执行不同的操作,如 MailListener(对于 user.created)TaskListener(对于 user.created)。 created) 用于添加任务。

  • 使用像 UserManager 这样的服务,并且在这个服务上有一个像 userCreated() 这样的方法,并且在这个方法上调用不同的操作,比如 sendMailOnCreated、addTaskOnCreated。

对你来说最好的方法是什么?

【问题讨论】:

  • 像往常一样,答案是:视情况而定。基于事件的系统非常灵活。如果您需要在 user.create 上做其他事情,那么您可以插入另一个侦听器。另一方面,用户管理器可让您将所有功能集中在一个地方,并且可能更易于维护。我倾向于使用事件,但没有“最佳”方法。

标签: symfony events service


【解决方案1】:

对我来说,您的第一个解决方案是最好的。这显然是 Event 组件的一个用例。它会更容易维护和更易读。

此外,如果您需要添加更多侦听器,您只需创建另一个侦听器并将其绑定到您的事件。您不再需要修改控制器。

【讨论】:

  • 我不明白为什么这应该更容易维护或更易读。最后,您将用方法调用替换事件发出,仅此而已。因此,我认为单元测试事件比仅使用普通服务更困难。如果上述应用程序不是捆绑包,不应该从第三方使用,那么我会坚持使用服务解决方案。
猜你喜欢
  • 2022-12-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2014-07-17
  • 2013-11-14
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
相关资源
最近更新 更多