- Laravel 教程
- Laravel - 主页
- Laravel - 概述
- Laravel - 安装
- Laravel - 应用程序结构
- Laravel - 配置
- Laravel - 路由
- Laravel - 中间件
- Laravel - 命名空间
- Laravel - 控制器
- Laravel - 请求
- Laravel-Cookie
- Laravel - 响应
- Laravel - 视图
- Laravel - 刀片模板
- Laravel - 重定向
- Laravel - 使用数据库
- Laravel - 错误和日志记录
- Laravel - 表单
- Laravel - 本地化
- Laravel - 会话
- Laravel - 验证
- Laravel - 文件上传
- Laravel - 发送电子邮件
- Laravel - AJAX
- Laravel - 错误处理
- Laravel - 事件处理
- Laravel - 外观
- Laravel - 合约
- Laravel - CSRF 保护
- Laravel - 身份验证
- Laravel - 授权
- Laravel - Artisan 控制台
- Laravel - 加密
- Laravel - 哈希
- 了解发布流程
- Laravel - 访客用户门
- Laravel - Artisan 命令
- Laravel - 分页自定义
- Laravel - 转储服务器
- Laravel - 操作 URL
- Laravel 有用资源
- Laravel - 快速指南
- Laravel - 有用的资源
- Laravel - 讨论
Laravel - 事件处理
事件提供了一个简单的观察者实现,允许用户订阅和侦听 Web 应用程序中触发的各种事件。Laravel 中的所有事件类都存储在app/Events文件夹中,监听器都存储在app/Listeners文件夹中。
用于在 Web 应用程序中生成事件和侦听器的 artisan 命令如下所示 -
php artisan event:generate
如上所述,此命令生成相应文件夹的事件和侦听器。
事件和侦听器是一种解耦 Web 应用程序的好方法,因为一个事件可以有多个彼此独立的侦听器。artisan 命令创建的 events 文件夹包含以下两个文件:event.php 和 SomeEvent.php。它们显示在这里 -
事件.php
<?php namespace App\Events; abstract class Event{ // }
如上所述,event.php包含类Event的基本定义以及对命名空间App\Events 的调用。请注意,用户定义或自定义事件是在此文件中创建的。
一些事件.php
<?php namespace App\Events; use App\Events\Event; use Illuminate\Queue\SerializesModels; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class SomeEvent extends Event{ use SerializesModels; /** * Create a new event instance. * * @return void */ public function __construct() { // } /** * Get the channels the event should be broadcast on. * * @return array */ public function broadcastOn() { return []; } }
请注意,该文件使用序列化来广播 Web 应用程序中的事件,并且必要的参数也在该文件中进行了初始化。
例如,如果我们需要在构造函数中初始化 order 变量来注册事件,我们可以通过以下方式完成:
public function __construct(Order $order) { $this->order = $order; }
听众
侦听器处理正在注册的事件中提到的所有活动。artisan 命令event:generate在app/listeners目录中创建所有侦听器。Listeners 文件夹包含一个文件EventListener.php,其中包含处理侦听器所需的所有方法。
事件监听器.php
<?php namespace App\Listeners; use App\Events\SomeEvent; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; class EventListener{ /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param SomeEvent $event * @return void */ public function handle(SomeEvent $event) { // } }
正如代码中提到的,它包含用于管理各种事件的句柄函数。我们可以创建针对单个事件的各种独立侦听器。