Laravel 事件提供了简单的观察者模式实现,允许你订阅和监听应用中的事件。事件类通常存放在 app/Events 目录,监听器存放在 app/Listeners。如果你在应用中没有看到这些目录,不要担心,它们会在你使用 Artisan 命令生成事件和监听器的时候自动创建。
事件是一个工具,使用之后可以将逻辑变得清晰,降低代码的耦合,使用场景例如游戏中的请求发货,发邮件等,下面是主要是根据laravel文档来讲述整个流程
首先在lapp/Providers/EventServiceProvider.php文件中去声明调用事件时会被谁监听到,也就是建立事件与监听者的关系,原始文件如下
[
'App\Listeners\EventListener',
],
//举例 发邮件事件
'App\Events\sendMail' => [ //你的事件
'App\Listeners\SendMailEventListener', //监听器
],
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
parent::boot();
//
}
}
执行命令生成event事件和监听器,不必担心事件重复执行命令会重复创建事件
php artisan event:generate
生成的事件在app\Events\SendMail.php目录下,监听器在app\Listeners\SendMailEventListener.php
SendMail.php
email = $email; //实例化的时候传参
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}
SendMailEventListener.php
email;
//如果你希望停止事件被传播到其他监听器,可以返回false实现
return false;
}
}
以上我们事件的逻辑已经处理好了,接下来要做的就是触发事件,使用event辅助函数
以上就是一个最简单的事件的创建和使用,如果想看完整的事件教程还是建议大家去看手册,事件的使用其实也挺适合多人开发的,如果一块逻辑包含很多个事件,多人维护的成本是比较大的,我们可以通过看事件以及监听器的逻辑就能理解一个需求,而不一定要去看Controller或者Service。