在app\Providers下的EventServiceProvider.php中添加我们定义的事件与监听器
- protected $listen = [
- Registered::class => [
- SendEmailVerificationNotification::class,
- ],
- 'App\ebvent\RegisterMessage'=>[//事件
- 'App\listeners\SendMessage'//监听器
- ],
- ];
使用 event:generate 命令即可。这个命令会生成在 EventServiceProvider 中列出的所有事件和监听器。当然,已经存在的事件和监听器将保持不变:
php artisan event:generate
在App\ebvent\目录下,打开你新创建的事件文件 RegisterMessage.php
- public $teacher;
- /**
- * Create a new event instance.
- *
- * @return void
- */
- public function __construct($teacher)
- {
- $this->teacher = $teacher;
- //
- }
在App\listeners\目录下,打开你新创建的监听器文件 SendMessage.php
- /**
- * Handle the event.
- *
- * @param \App\ebvent\RegisterMessage $event
- * @return void
- */
- public function handle(RegisterMessage $event)
- {
- Cache::add('name','张三');
- //
- }
- Route::get('listeners', function () {
- $user = ['name' => 'peter'];
- event(new \App\Event\RegisterMessage($user));
- return 'ok';
- });
当我们访问/listeners路由时,会把$user变量传给事件,会执行构造方法,同时监听器也会执行handle方法
在storage目录下可以看到两个缓存文件,说明事件和监听器起作用了
