事件监听 - Yii2关联事件求一个简单的demo或者指导

查看:116
本文介绍了事件监听 - Yii2关联事件求一个简单的demo或者指导的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

应用场景:用户点击帖子收藏

基本流程:
点击收藏后,数据表中添加一个当前帖子的收藏记录

事件触发:
1、帖子的收藏数+1
2、用户的积分+1
3、发送给帖子作者收藏通知

关联事件:
用户积分+1后又触发用户积分添加日志事件

疑问:
1、上述的描述是否正确?
2、用户积分+1后,如何再次触发积分添加日志事件?

解决方案

描述基本正确。参考数据库如图。
代码就不写了,大概思路是,每一个操作对应一个event,当操作发生的时候,读取function字段下的值(由json形式存储),json_decode后,遍历这个数组,这个数组的key代表一个处理方式,value表示变化量。

如触发了收藏事件,读取了{"收藏数":"+1","积分":"+1","发送通知":"true"},还原回数组后,看到有收藏数,积分,发送通知三个事件。分别调用收藏数处理方法,积分变动方法,发送通知方法,并分别把值传递过去(传值时候还需要把其他必要的值一块传递过去)。收藏数处理方法看到传过来的值是+1就把收藏+1,发送通知方法收到的值是true就发通知,false就不发。

日志问题,我个人不倾向于把它当作事件来处理,直接在对应的实现方法中调用一个日志处理类/方法进行处理就行。想要精细控制,可以考虑在这个日志处理方法中具体实现。方法跟之前类似,函数原型log(type,value),如log('收藏','要记录到日志的内容')。

这篇关于事件监听 - Yii2关联事件求一个简单的demo或者指导的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆