扫一扫浏览

tp6的事件绑定问题,其实是这样用的

未结贴
0 422
学习tp6未认证 2019-12-30 13:48:44
收藏

看了官方的事件文档后,很多一直测试事件绑定,怎么测试都感觉没啥用,当然文档也给出了使用方法

return [
    'bind'    =>    [
        'UserLogin' => 'app\event\UserLogin',
        // 更多事件绑定
    ],
];

然后在其实地方通过Event::trigger('UserLogin');触发,但是你会发现基本没什么卵用,其实是下面的代码误导了大家

return [
    'bind'    =>    [
        'UserLogin' => 'app\event\UserLogin',
        // 更多事件绑定
    ],
    'listen'  =>    [
        'UserLogin'    =>    ['app\listener\UserLogin'],
        // 更多事件监听
    ],
];

两个都一样的,感觉不到有啥区别,你们会一直这样用,那到底怎么用的呢?官方话述“如果你定义了事件类 就可以简化事件的监听时使用的事件标识 如果没有使用事件类的话 事件标识绑定是不需要的”,你对这句话理解多少了,或还是一脸蒙B

首先你要看出他的用义"事件绑定",那肯定是绑定事件的呀,所选必须要有事件,不然绑定什么呢,所以正确的用法是这样的

return [
    'bind'    =>    [
        'ul' => 'UserLogin',
        // 更多事件绑定
    ],
    'listen'  =>    [
        'UserLogin'    =>    ['app\listener\UserLogin'],
        // 更多事件监听
    ],
];

发现没有bind的值是listen的key,是为了简化事件名的,哈哈,反正我目前来看感觉是多余的

接下来用的话

Event::trigger('UserLogin');
与
Event::trigger('ul');

都可以触发app\listener\UserLogin事件,我是我目前的理解,如果你有更深的理解可以帮我补充补充

最近热帖 HOT TOPIC
父元素flex之后,子元素高度自适应问题 5027
thinkphp5隐藏默认模块的一些问题 4464
一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)php实现 4156
关于thinkphp5.0.x getshell漏洞的说明 3942
教你如果处理高并发数据不同步的问题php篇 3894
tpframe新建主题 3882
移动web资源整理,你值得收藏的干货 3760
omnicore rpc api中文手册【usdt】 3748
2018最新版PHP视频教程-ThinkPHP5商城系统+项目实战 3661
【全套视频】thinkphp5视频教程 3618
月度热议HOT COMMENTS
tpframe 后续版本你希望有的功能是什么(分享贴) 12
权限那里怎么一登录别的账号就报错啊 9
关于tpframe的一点话题 6
cms插件在分类排序的时候JSON错误 6
基于tpframe v3.x 的微信公众号插件已批量上线 5
tpframe插件tcms插件v2.2已发布上线,欢迎下载使用 5
tpframe6.0马上就要跟大家见面了,一次全新的升级 5
新增的管理员没有权限操作CMS模块。 3
api接口文档插件easydoc的基本用法,快速搞定接口文档 3
thinkphp5自动完成操作,两次运行的详解 2