完全掌握thinkphp的事件绑定、监听和订阅
发布时间 - 2022-04-13 00:00:00 点击率:次本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了事件绑定、监听、订阅的相关问题,事件相比较中间件的优势是事件比中间件更加精准定位,下面一起来看一下,希望对大家有帮助。
推荐学习:《PHP视频教程》
事件是什么
事件相比较中间件的优势是事件比中间件更加精准定位(或者说粒度更细),并且更适合一些业务场景的扩展。例如,我们通常会遇到用户注册或者登录后需要做一系列操作,通过事件系统可以做到不侵入原有代码完成登录的操作扩展,降低系统的耦合性的同时,还能完成业务的需求。
TP6中事件的使用
官网的解释,没
有实例,这里简单的告诉大家如何使用,会使用之后再去发现更多操作
1.事件监听
- 命令行生成监听
php think make:listener UserLogin
一般建议直接在事件定义文件(event.php)中定义对应事件的监听。
return [
'bind' => [
'UserLogin' => 'app\event\UserLogin',
// 更多事件绑定
],
'listen' => [
'UserLogin' => ['app\listener\UserLogin'],
// 更多事件监听
],
];2.事件订阅
- 命令行
php think make:subscribe User
默认会生成app\subscribe\User类,或者你可以指定完整类名生成。
3.自定义订阅
如果希望自定义订阅方式(或者方法规范),可以定义subscribe方法实现。
listen('UserLogin', [$this,'onUserLogin']); $event->listen('UserLogout',[$this,'onUserLogout']); } }然后在事件定义文件注册事件订阅者
return [ 'bind' => [ 'UserLogin' => 'app\event\UserLogin', // 更多事件绑定 ], 'listen' => [ 'UserLogin' => ['app\listener\UserLogin'], // 更多事件监听 ], 'subscribe' => [ 'app\subscribe\User', // 更多事件订阅 ], ];事件触发
// 触发UserLogin事件 用于执行用户登录后的一系列操作 Event::trigger('UserLogin'); 或者使用助手函数 event('UserLogin');推荐学习:《PHP视频教程》
# thinkphp # php # 中间件 # Event # 事件 # 绑定 # 自定义 # 命令行 # 相比较 # 你可以 # 还能 # 带来了 # 给大家 # 再去 # 或者说
相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571 】
相关推荐: 音乐网站服务器如何优化API响应速度? 网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规? Firefox Developer Edition开发者版本入口 零基础网站服务器架设实战:轻量应用与域名解析配置指南 详解阿里云nginx服务器多站点的配置 Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】 如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】 如何确保FTP站点访问权限与数据传输安全? 如何在VPS电脑上快速搭建网站? Laravel Session怎么存储_Laravel Session驱动配置详解 Laravel Fortify是什么,和Jetstream有什么关系 Internet Explorer官网直接进入 IE浏览器在线体验版网址 Laravel如何实现用户注册和登录?(Auth脚手架指南) JavaScript Ajax实现异步通信 Java垃圾回收器的方法和原理总结 js实现点击每个li节点,都弹出其文本值及修改 Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边) html如何与html链接_实现多个HTML页面互相链接【互相】 如何在宝塔面板中创建新站点? 怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗? Linux系统命令中tree命令详解 Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道 使用Dockerfile构建java web环境 如何自定义建站之星模板颜色并下载新样式? 如何在建站之星绑定自定义域名? Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】 Laravel集合Collection怎么用_Laravel集合常用函数详解 HTML 中如何正确使用模板变量为元素的 name 属性赋值 Python高阶函数应用_函数作为参数说明【指导】 EditPlus 正则表达式 实战(3) Laravel怎么实现模型属性的自动加密 Laravel如何处理文件下载请求?(Response示例) 如何快速选择适合个人网站的云服务器配置? EditPlus中的正则表达式实战(5) Python文件异常处理策略_健壮性说明【指导】 Laravel模型关联查询教程_Laravel Eloquent一对多关联写法 如何实现javascript表单验证_正则表达式有哪些实用技巧 湖南网站制作公司,湖南上善若水科技有限公司做什么的? 1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤 如何在IIS中新建站点并解决端口绑定冲突? Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置 如何用PHP快速搭建CMS系统? 如何用5美元大硬盘VPS安全高效搭建个人网站? 如何在阿里云虚拟服务器快速搭建网站? 如何打造高效商业网站?建站目的决定转化率 如何在 React 中条件性地遍历数组并渲染元素 百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧 绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信 Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】 详解Android——蓝牙技术 带你实现终端间数据传输

