介绍
这篇文章给大家介绍如何使用Laravel框架中事件的事件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
<强>注册事件以及监听器强>
首先我们需要在app/供应商/目录下的EventServiceProvider。php中注册事件监听器映射关系,如下:
protected listen 美元;=,( ,,,& # 39;应用\ \ BlogView& # 39;事件,=祝辞,( ,,,,,& # 39;应用程序\听众\ BlogViewListener& # 39; ,,,, ];才能
然后项目根目录下执行如下命令
php artisan 事件:生成
该命令完成后,会分别自动在app/事件和app/Listensers目录下生成BlogView.php和BlogViewListener。php文件。
定义事件
& lt; php ? namespace 应用\事件; use 应用\ \事件事件; use 应用\发布; use 照亮\ \ SerializesModels队列; use 照亮\ \广播\ ShouldBroadcast合同; class BlogView  extends 事件 { use 才能;SerializesModels; ,/* * ,,*,Create a new event 实例。 ,,* ,,*,@return 空白 ,,*/public 才能;function  __construct (Post post)美元 {才能 ,,,这个→美元post =,后美元; ,,} ,/* * ,,*,Get 从而channels 从而event should be broadcast 。 ,,* ,,*,@return 数组 ,,*/public 才能;function 联欢() {才能 ,,,return []; ,,} }
其实看到这些你会发现该事件类只是注入了一个帖子实例罢了,并没有包含多余的逻辑。
<强>定义监听器
强>事件监听器在处理方法中接收事件实例,事件:生成命令将会自动在处理方法中导入合适的事件类和类型提示事件。在处理方法内,你可以执行任何需要的逻辑以响应事件,我们的代码实现如下:
& lt; php ? namespace 应用\听众; use 应用\ \ BlogView事件; use 照亮\ \ InteractsWithQueue队列; use 照亮\ \队列\ ShouldQueue合同; use 照亮\会议\商店; class BlogViewListener { protected 才能;美元会话; ,/* * ,,*,Create 从而event 听众。 ,,* ,,*,@return 空白 ,,*/public 才能;function  __construct (Store 会话美元) {才能 ,,,这个→美元session =,美元会话; ,,} ,/* * ,,*,Handle 从而事件。 ,,* ,,*,@param BlogView $事件 ,,*,@return 空白 ,,*/public 才能;function 处理(BlogView 事件美元) {才能 ,,,post 美元;=,事件→美元后; ,,,,//先进行判断是否已经查看过 ,,,if (! $ this→hasViewedBlog (post)美元),{ ,,,,,,//保存到数据库 ,,,,,美元后→view_cache =,美元后→view_cache +, 1; ,,,,,美元后→保存(); ,,,,,,//看过之后将保存到,Session ,,,,,这个→美元storeViewedBlog ($); ,,,} ,,} protected 才能;function  hasViewedBlog ($) {才能 ,,,return array_key_exists(美元后→id,这→美元getViewedBlogs ()); ,,} protected 才能;function  getViewedBlogs () {才能 ,,,return $ this→会话→得到(& # 39;viewed_Blogs& # 39;,, []); ,,} protected 才能;function  storeViewedBlog ($) {才能 ,,,key 美元;=,& # 39;viewed_Blogs # 39;公司。美元后→id; ,,,这个→美元会话→把(关键美元,,时间()); ,,} }
注释中也已经说明了一些逻辑。
<强>触发事件
强>事件和事件监听完成后,我们要做的就是实现整个监听,即触发用户打开文章事件在此我们使用和事件提供的火方法,如下:
& lt; php ? namespace 应用\ Http \控制器; use 照亮\ Http \请求; use 应用\发布; use 阐明\ \外墙\事件的支持; use 应用\ Http \请求; use 应用\ \ BlogView事件; use \ App \ Http \控制器控制器; class BlogController  extends 控制器 { ,, public 才能;function  showPost(蛞蝓美元) {才能 ,,,post 美元;=,职位:whereSlug($蛞蝓)→firstOrFail (); ,,,的事件:火(new BlogView (post)美元); ,,,return 视图(& # 39;home.blog.content& # 39;)→withPost ($); ,,} }如何使用Laravel框架中事件的事件