- 0
- 0
- 约小于1千字
- 约 7页
- 2026-02-10 发布于北京
- 举报
快帅酷swoole混合实战之秒杀前传刻意训练自己的技术套路讲师:沈逸
穿插知识点:理解依赖注入/控制反转
先看一段古老却常见的封装代码classMyDB{private$db;//这里可能是pdo可能是别的,仅仅为了演示publicfunction__construct($connInfo){//略}publicfunctionqueryForRows($sql){return[user_id=101,user_name=shenyi];}}classMyUser{private$mydb;publicfunction__construct($dsn){$this-mydb=newMyDB($dsn);}publicfunctiongetAllUsers():array{return$this-mydb-queryForRows(select*fromusers);}}
调用$user=newMyUser(mysql:host=localhost;);var_dump($user-getAllUsers());一个很明显问题在于:我们把MyUser和数据库两个概念混淆在了一起,变成了一个。当数据库密码或其他信息变掉了,我们就要修改MyUser的构造函数。造成模块耦合事实上,MyUser就应该专注于业务处理,Db就应该是独立的
正确做法MyUserMyDB向MyUser注入MyDB的实例
代码$db=newMyDB(mysql:host=localhost;);$user=newMyUser($db);var_dump($user-getAllUsers());这里就实现了最基本的1、依赖注入DependencyInjection(DI)2、同时MyUser不再主动去newMyDB。变成被动等待”依赖”注入,这也叫控制反转InversionofControl(IoC)
欢迎加入我们的QQ群程序员在囧途教育QQ群606976586
您可能关注的文档
- 天窗连接器端视图及电路详细信息说明.pdf
- 复旦高级微观济学问题集:技术与成本小化.pdf
- 机械能守恒定律表达式选取例谈.pdf
- 厦门登山协会入会指南2023.pdf
- 初中英语下册Unit 5 Topic 2 Section B:情感表达与对话练习.pdf
- 汽车电气与电子系统故障诊断与修复动画脚本.pdf
- 汽车离心点火提前调节器故障诊断与修复动画脚本.pptx
- 2024年九年级3月语文学业测评参及评分.pdf
- 2018年全国尿沉渣形态学室间质量评价报告.pdf
- 杯型口罩机生产线后段焊耳带组件清单.pdf
- 初中九年级英语Unit 13环境保护主题听说整合教学设计.docx
- 85分式方程及其解法课件人教版数学八年级上册.pptx
- 基于核心素养的博物馆主题说明文写作教学设计与实施——以九年级英语为例.docx
- 53一次函数的意义第课时课件浙教版八年级数学上册.pptx
- 大单元视角下“人民民主政权的巩固”与历史关键能力进阶教学设计——以初中历史中考复习课为例.docx
- 五年级数学下册典型例题解析人教版期末重点攻克.pptx
- 小学四年级信息技术《智启信息时代:查找网上信息的基石》教学设计及反思.docx
- 大疆域·大人口·大战略:中国国家空间认知的初步建构.docx
- 人教版(一年级起点)小学英语四年级上册Revision 1 Lesson 2教学设计.docx
- 大单元结构化复习:旧民主主义革命时期(18401919)的内忧外患与救亡图存.docx
原创力文档

文档评论(0)