在包中放置Laravel事件监听器


Laravel event listeners in packages, where to put them?

我正在编写一个相对简单的Laravel 4.2包,用于编写/发送邮件。组件应该在主应用程序(或其他组件)中侦听用户定义的事件,并在事件触发时发送。

我已经创建了多语言邮件编辑和事件关联,但现在我不知道在哪里正确地放置和设置我的"foreach"事件循环来创建组件内的实际侦听器。

有人能帮我吗?

为了更好地解释我想在组件中做什么:

  • 允许管理员从后端编写电子邮件模板
  • 将每个电子邮件(或邮件集)关联到指定的事件(例如:user.create)
  • 在应用程序执行时,组件循环遍历保存的事件并注册实际的侦听器
  • 如果在执行期间主应用程序或其他组件触发该事件,邮件组件通过发送相应的电子邮件来响应。

亲切的问候,费德里科•

好的,我花了一些测试来找到我认为是我所指的Event::listen()循环的适当位置。

我知道我几乎可以在我想要的地方添加侦听器,但是对于一个组件,我没有线索。最后,我决定在ServiceProvider的boot()方法中构建它。

现在我的组件ServiceProvider做以下操作:

  • 从数据库中收集要监听的事件;
  • 为每个找到的行分配一个监听器;
  • 在主应用程序触发相关事件时运行闭包函数。

使用Laravel很容易!