Events 提供了一个简单的观察者实现,允许用户订阅和监听 Web 应用程序中触发的各种事件。 Laravel 中的所有事件类都存储在 app/Events 文件夹中,监听器存储在 app/Listeners 文件夹中。
用于在 Web 应用程序中生成事件和监听器的 artisan 命令如下所示 -
php artisan event:generate
此命令将事件和侦听器生成到上面讨论的各个文件夹。
事件和侦听器是解耦 Web 应用程序的一种好方法,因为一个事件可以有多个独立的侦听器彼此的。 artisan 命令创建的 events 文件夹包含以下两个文件:event.php 和 SomeEvent.php。它们显示在这里 -
<?php 命名空间 AppEvents; 抽象类事件{ // }
如上所述,event.php包含类Event的基本定义以及对命名空间AppEvents的调用。请注意,用户定义或自定义事件是在此文件中创建的。
<?php 命名空间 AppEvents; 使用 AppEventsEvent; 使用 IlluminateQueueSerializesModels; 使用 IlluminateContractsBroadcastingShouldBroadcast; SomeEvent 类扩展了 Event{ 使用 SerializesModels; /** * 创建一个新的事件实例。 * * @return 无效 */ 公共函数__construct(){ // } /** * 获取应该广播该事件的频道。 * * @return 数组 */ 公共函数broadcastOn(){ 返回 []; } }
观察该文件在 Web 应用程序中使用序列化来广播事件,并且必要的参数也在该文件中初始化。
例如,如果我们需要在构造函数中初始化 order 变量来注册事件,我们可以按以下方式执行 -
public function __construct(Order $order) { $this->order = $order; }
监听器处理正在注册的事件中提到的所有活动。 artisan 命令 event:generate 在 app/listeners 目录中创建所有 listeners。 Listeners 文件夹包含一个文件EventListener.php,其中包含处理侦听器所需的所有方法。
<?php 命名空间 AppListeners; 使用 AppEventsSomeEvent; 使用 IlluminateQueueInteractsWithQueue; 使用 IlluminateContractsQueueShouldQueue; 类EventListener{ /** * 创建事件监听器。 * * @return 无效 */ 公共函数__construct(){ // } /** * 处理事件。 * * @param SomeEvent $event * @return 无效 */ 公共函数句柄(SomeEvent $event){ // } }
代码中提到,它包含handle用于管理各种事件的函数。我们可以创建针对单个事件的各种独立侦听器。
以上是Laravel - 事件处理的详细内容。更多信息请关注PHP中文网其他相关文章!