扫一扫浏览

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

未结贴
0 2159
学习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之后,子元素高度自适应问题 5994
一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)php实现 5575
thinkphp5隐藏默认模块的一些问题 5542
教你如果处理高并发数据不同步的问题php篇 5339
关于thinkphp5.0.x getshell漏洞的说明 5274
tpframe新建主题 5205
PHP如何判断字符串是否为json格式 5057
【全套视频】thinkphp5视频教程 5002
omnicore rpc api中文手册【usdt】 4976
移动web资源整理,你值得收藏的干货 4849
月度热议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