Laravel 8 事件和监听器示例
介绍
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 开发人员。