Laravel 事件和监听器创建
在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:
1. 手动创建单个 Event
如果你只想创建一个事件类,可以使用 make:event 命令:
php artisan make:event UserRegistered
执行后,文件将生成在 app/Events/UserRegistered.php。
2. 手动创建单个 Listener
如果你已经有了事件,现在需要创建一个监听器来处理它:
php artisan make:listener SendWelcomeNotification --event=UserRegistered
--event参数会自动在监听器的handle()方法中对该事件进行类型提示(Type-hint)。文件将生成在
app/Listeners/SendWelcomeNotification.php。
3. 批量创建(推荐方式)
这是最快捷的方法,尤其是在项目初期。你可以在 app/Providers/EventServiceProvider.php 的 $listen 数组中先定义好映射关系:
protected $listen = [ 'App\Events\UserRegistered' => [ 'App\Listeners\SendWelcomeEmail', 'App\Listeners\UpdateUserStats', ], ];
定义好后,运行以下命令:
php artisan event:generate
Laravel 会自动扫描该文件,并为你创建所有缺失的 Event 和 Listener 类。
事件系统的基本工作流程
Event (事件):通常是一个简单的 DTO(数据传输对象),只负责承载数据(比如用户信息)。
Listener (监听器):包含具体的业务逻辑(比如发送邮件、写入日志)。
Dispatch (分发):在你的控制器或服务中触发事件:
event(new UserRegistered($user));// 或者UserRegistered::dispatch($user);
常用命令小结
| 命令 | 用途 |
| php artisan make:event Name | 创建一个事件类 |
| php artisan make:listener Name | 创建一个监听器类 |
| php artisan event:generate | 根据 ServiceProvider 自动生成所有定义的事件和监听器 |
| php artisan event:list | 查看系统中所有已注册的事件和监听器列表 |