Laravel 8 事件和监听器示例

yanding 2023-06-29 274

介绍

Laravel 为事件和监听器提供了一种简单的机制,因此无论何时你想订阅或监听你的应用程序的任何事件,你都可以轻松完成。您可以向它们的侦听器注册事件,并决定您希望它们在特定操作后执行的操作。例如,无论何时创建新订单,我们都希望向卖家发送邮件或短信。为简化起见,我们可以说事件是应用程序中采取的操作,而侦听器是响应事件的操作。

在本教程中,我们将学习和探索Laravel 8 事件和监听器。我们将开发一个小型演示应用程序,每当创建用户时我们都会在其中发送一封电子邮件。在这种情况下,我们可以说用户创建是一个事件,监听器将在监听该事件时发送一封电子邮件。

教程目标:Laravel 8 事件和监听器

在开始开发部分之前,让我们看看我们在本教程中构建的内容。

注册事件和监听器

第一步是注册事件和相应的侦听器。为此,Laravel 提供了一个事件服务提供者.php您可以在其中定义事件和侦听器的文件。

$听属性包含一个数组,用于将所有事件和侦听器注册为键值对。如下所示定义事件和侦听器。

// 事件服务提供者.php


受保护的 $listen = [
  已注册::类 => [
    发送电子邮件验证通知::类,
  ],
  'App\Event\UserCreated' => [
    'App\Listeners\SendEmail'
  ]];

注册事件和侦听器后,运行以下命令为相应的事件和侦听器创建文件。


php artisan 事件:生成

上面的命令会生成两个文件,分别是:

  • UserCreated 在 app/Events

  • 在 app/Listeners 中发送电子邮件

完成Laravel 8 事件和监听器设置后,现在是时候开始处理逻辑部分了。

定义事件逻辑

在本节中,我们将定义我们希望侦听器执行的逻辑集的动作(事件);在我们的演示应用程序中,操作是创建用户。

打开App\Events\UserCreated.php并使用以下代码将实际电子邮件地址传递为$电子邮件__构造UserCreated类的方法

// App\Events\UserCreated.php


公共$电子邮件;
公共函数 __construct($email)
{
  $this->email = $email;
}

整个文件将如下所示。


命名空间应用\事件;使用 Illuminate\Broadcasting\Channel;使用 Illuminate\Broadcasting\InteractsWithSockets;使用 Illuminate\Broadcasting\PresenceChannel;使用 Illuminate\Broadcasting\PrivateChannel;使用 Illuminate\Contracts\Broadcasting\ShouldBroadcast;使用 Illuminate\Contracts\Queue\ShouldQueue;使用 Illuminate\Foundation\Events\Dispatchable;使用 Illuminate\Queue\SerializesModels;类 UserCreated 实现 ShouldQueue{
   使用 Dispatchable、InteractsWithSockets、SerializesModels;7i
   公共$电子邮件;
   /**
    * 创建一个新的事件实例。
    *
    * @return 无效
    */
   公共函数 __construct($email)
   {
       $this->email = $email;
   }
   /**
    * 获取事件应该广播的频道。
    *
    * @return \Illuminate\Broadcasting\Channel|数组
    */
   公共函数 broadcastOn()
   {
       return new PrivateChannel('频道名称');
   }}

这里我们继承 ShouldQueue 接口使用类 UserCreated 实现 ShouldQueue.它会自动将逻辑放入队列中。

定义监听器逻辑:handle() 方法

在这里,我们将编写用于在创建用户时发送电子邮件的实际逻辑。在App\Listeners\SendEmail.php中,通过用户创建 $eventhandle() 方法的参数,以便我们可以从事件中获得值。handle()方法中的逻辑将在事件被调用时执行。


公共函数句柄(UserCreated $event)
{
 print_r($event->email);
 //我们可以从这里发送邮件
 echo ".. 来自听众";
 出口;
}

调度事件

创建事件和侦听器后,现在是分派事件的时候了。这很简单;您只需要将事件类对象传递给event()方法。

// 用户控制器.php


事件(新用户创建(“ abc@gmail.com ”));

GitHub 存储库:Laravel 8 事件和监听器

随意克隆存储库并使用代码。您可以在此处找到源代码。

结论

我希望带有示例的 Laravel 8 事件和监听器教程对您有所帮助。如有任何疑问和建议,请随时与我们联系。如果您是 Laravel 爱好者,您必须查看Laravel 教程页面,我们在该页面提供各种教程和源代码。

您是否正在寻找具有最佳问题解决能力的熟练且经验丰富的 Laravel 开发人员?如果是,那么您只需点击一下即可聘请最好的 Laravel 开发人员!立即联系我们并为您的项目聘请 Laravel 开发人员

言鼎科技

The End