博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOC容器
阅读量:5908 次
发布时间:2019-06-19

本文共 1304 字,大约阅读时间需要 4 分钟。

php的依赖注入

传统的思路是应用程序用到一个A类,就会创建A类并调用A类的方法,假如这个方法内需要一个B类,就会创建B类并调用B类的方法,而这个方法内需要一个C类,就会创建C类,接着做些其它工作。

1 
doSomething();16 echo __METHOD__, '我是B类|';17 }18 }19 20 class A21 {22 public function doSomething()23 {24 $bar = new B();25 $bar->doSomething();26 echo __METHOD__, '我是A类|';;27 }28 }29 30 $class = new A();31 $class->doSomething(); //C::doSomething我是C类|B::doSomething我是B类|A::doSomething我是A类|

使用依赖注入的思路是应用程序用到A类,A类需要B类,B类需要C类,那么先创建C类,再创建B类并把C注入,再创建A类,并把B类注入,再调用A方法,A调用B方法,接着做些其它工作。

1 
c = $c;18 }19 20 public function doSomething()21 {22 $this->c->doSomething();23 echo __METHOD__, '我是B类|';24 }25 }26 class A27 {28 private $b;29 30 public function __construct(B $b)31 {32 $this->b = $b;33 }34 35 public function doSomething()36 {37 $this->b->doSomething();38 echo __METHOD__, '我是A类|';;39 }40 }41 42 $class = new A(new B(new C()));43 $class->doSomething(); // C::doSomething我是C类|B::doSomething我是B类|A::doSomething我是A类|

这就是控制反转模式。依赖关系的控制反转到调用链的起点。这样你可以完全控制依赖关系,通过调整不同的注入对象,来控制程序的行为。例如A类用到了memcache,可以在不修改A类代码的情况下,改用redis。

 

使用依赖注入容器后的思路是应用程序需要到A类,就从容器内取得A类,容器创建C类,再创建B类并把C注入,再创建A类,并把B注入,应用程序调用A方法,A调用B方法,接着做些其它工作.

转载于:https://www.cnblogs.com/BrokenHeart/p/10681356.html

你可能感兴趣的文章
Spring自动化装配bean
查看>>
JavaScript学习总结(四)——this、原型链、javascript面向对象
查看>>
大数据平台网站日志分析系统
查看>>
伪基站和空中信息拦截
查看>>
[裴礼文数学分析中的典型问题与方法习题参考解答]5.1.10
查看>>
Android Studio 使用小技巧
查看>>
python接口自动化7-参数关联
查看>>
2.8. Spring boot with Webpage
查看>>
Android进阶 | 摆脱斗图 | 行业交流 | 深度学习 | 付费
查看>>
iOS - Swift 面向对象语法
查看>>
【★】致全球第一批全帧3D游戏!
查看>>
UML类图
查看>>
[20150818]模拟wan网络延迟.txt
查看>>
Oracle 语句常见错误
查看>>
关于create database语句在10g,11g中的不同
查看>>
MySQL分布式集群之MyCAT(一)简介(修正)
查看>>
[20160711]索引键值在B tree索引块中的顺序
查看>>
nginx启动、开机自启动、重启、关闭
查看>>
error: src refspec XXX matches more than one
查看>>
云监控最佳实践之-容器所有实例的热力图
查看>>