第一部分 解释
当一个用户阅读了一篇文章,可能需要给文章增加点击量,给阅读的用户增加积分,给文章作者发送通知等功能。对于以上操作,
我们可以使用laravel提供的事件机制进行良好的解耦。以上的用户阅读一篇文章,就是laravel中的一个事件,用户阅读文章后触
发的一系列操作就是此事件的监听者,他们会被逐个执行。实际上laravel的事件服务是观察者模式的一个实现,
触发了一个事件,就好象推倒了多米诺骨牌的地一块,剩下的操作就骄傲给提前摆好的阵型自行完成了。不同的是现实中我们很难让骨牌
停止倒塌, 但在laravel中我们可以很方便的停止事件的传播,即终止监听者的调用链。
第二部分 追源码,这个有兴趣的可以自行了解一下。
第三部分 使用
1、使用一 通过触发事件给监听者传参
2、 使用命令生成相应的文件:php artisan event:generate
为每个事件和监听器手动创建文件是件很麻烦的事情,而在这里,你只需将监听器和事件添加到 EventServiceProvider 中,再使用 event:generate 命令即可。这个命令会生成在 EventServiceProvider 中列出的所有事件和监听器。当然,已经存在的事件和监听器将保持不变:
3、在 StudyEvent.php 文件中的 __construct()函数中,咱们只接收一个存储服务器预警数据的模型,如下图:
4、在 StudyEventListeners.php 文件中,咱们只做一个简单的打印,如下图
5、现在通过,控制器访问访问一下。 控制器中代码如下:
打印的结果如下:
至此,说明一个简单的事件,就设置好了。补充: StudyEvent.php 文件中的 __construct()函数中,不是非要传模型,根据自己所需,传正确的参数即可。
上面是,事件没有使用 laravel 队列的情况,下面在说一下,如何使用队列。
第一步: StudyEventListeners.php 文件 继承 laravel 队列类即可(implements ShouldQueue)
第二步: