在许多情况下,当我们的应用程序变得越来越大并且需要处理越来越多的任务时,我们的控制器、演示器或服务的大小会迅速增长,并且它很容易变得笨拙、不可测试和缓慢。单一职责重组我们的逻辑并将不同类型的任务放入专门的类中可能非常有用,并且是推荐的“最佳”实践。为什么?处理更多但更小的碎片比处理巨石中的所有东西要容易得多。最重要的是,您的应用程序变得更易于测试,您不会破坏SRP,并且您最终会轻松获得更干净、更漂亮的代码。开始使用事件的一项有用技术是Laravel的事件服务。首先,在每种情况下,通过将任务移至事件类来完全清理控制器。使用事件的另一个原因是队列系统,它允许您的应用程序异步完成作业,这可以大大加快您的应用程序。事件系统有两个重要的部分。事件本身和监听器(Listener)可以绑定到特定的事件上。事件类负责序列化传入的数据并将其传递给监听器,监听器旨在处理事件触发后的逻辑内容。使用Event实际触发事件从未如此简单,我们所要做的就是使用事件类作为参数调用event()帮助程序。如:event(UserRegistered::class)。让我们通过一个常见的例子看看它在现实生活中是如何工作的。在我们的应用程序中,我们想向新用户发送一封欢迎电子邮件。首先,我们需要在EventServiceProvider中绑定事件和监听器。如果我们想要不同的逻辑来处理特定的事件,我们可以为该事件附加更多的监听器。//app/Providers/EventServiceProvider.php['App\Listeners\SendWelcomeEmail',],];}当绑定准备好后,我们可以使用phpartisanevent:generate生成一对事件监听器,也可以使用artisan的make命令单独创建它们。除了将用户指定为可以传递给侦听器的公共属性之外,我们的事件没有其他责任。//app/Events/UserRegistered.phpuser=$user;}}我们的Listener监听器是很重要的一部分。它实现了ShouldQueue接口,这意味着该事件将被推送到队列堆栈。在handle方法中,我们正在实现将电子邮件发送给给定用户的逻辑。//app/Listeners/SendWelcomeEmail.phpuser)->send(newWelcomeEmail($event->user));}}重构我们的逻辑非常有用,尤其是当您需要处理大量任务时。事件和监听器可能对你有很大的帮助。你可以在这里找到官方的Laravel事件文档。更多PHP知识请前往PHPCasts
