首页  >  文章  >  php框架  >  Laravel - 事件处理

Laravel - 事件处理

王林
王林原创
2024-08-27 10:50:39922浏览

Events 提供了一个简单的观察者实现,允许用户订阅和监听 Web 应用程序中触发的各种事件。 Laravel 中的所有事件类都存储在 app/Events 文件夹中,监听器存储在 app/Listeners 文件夹中。

用于在 Web 应用程序中生成事件和监听器的 artisan 命令如下所示 -

 php artisan event:generate

此命令将事件和侦听器生成到上面讨论的各个文件夹。

Event Generator

事件和侦听器是解耦 Web 应用程序的一种好方法,因为一个事件可以有多个独立的侦听器彼此的。 artisan 命令创建的 events 文件夹包含以下两个文件:event.php 和 SomeEvent.php。它们显示在这里 -

Event.php

<?php
命名空间 AppEvents;
抽象类事件{
   //
}

如上所述,event.php包含类Event的基本定义以及对命名空间AppEvents的调用。请注意,用户定义或自定义事件是在此文件中创建的。

SomeEvent.php

<?php

命名空间 AppEvents;

使用 AppEventsEvent;
使用 IlluminateQueueSerializesModels;
使用 IlluminateContractsBroadcastingShouldBroadcast;

SomeEvent 类扩展了 Event{
   使用 SerializesModels;
   /**      * 创建一个新的事件实例。
      *
      * @return 无效
   */
   
   公共函数__construct(){
      //
   }
   
   /**      * 获取应该广播该事件的频道。
      *
      * @return 数组
   */
   
   公共函数broadcastOn(){
      返回 [];
   }
}

观察该文件在 Web 应用程序中使用序列化来广播事件,并且必要的参数也在该文件中初始化。

例如,如果我们需要在构造函数中初始化 order 变量来注册事件,我们可以按以下方式执行 -

public function __construct(Order $order) {
   $this->order = $order;
}

监听器

监听器处理正在注册的事件中提到的所有活动。 artisan 命令 event:generateapp/listeners 目录中创建所有 listeners。 Listeners 文件夹包含一个文件EventListener.php,其中包含处理侦听器所需的所有方法。

EventListener.php

<?php

命名空间 AppListeners;

使用 AppEventsSomeEvent;
使用 IlluminateQueueInteractsWithQueue;
使用 IlluminateContractsQueueShouldQueue;

类EventListener{
   /**      * 创建事件监听器。
      *
      * @return 无效
   */
   
   公共函数__construct(){
      //
   }

   /**      * 处理事件。
      *
      * @param SomeEvent $event
      * @return 无效
   */
   
   公共函数句柄(SomeEvent $event){
      //
   }
}

代码中提到,它包含handle用于管理各种事件的函数。我们可以创建针对单个事件的各种独立侦听器。

以上是Laravel - 事件处理的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn