分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

如何理解php的依赖注入

发布时间:2023-09-06 01:22责任编辑:白小东关键词:暂无标签

之前写过关于php依赖注入的文章。。最近发现有的朋友对这个还是理解模糊,在这里我想写个简单的实例帮助朋友们理解下。。。
传统的思路是应用程序用到一个A类,就会创建A类并调用A类的方法,假如这个方法内需要一个B类,就会创建B类并调用B类的方法,而这个方法内需要一个C类,就会创建C类,接着做些其它工作。

<?phpclass C{ ???public function doSomething() ???{ ???????echo __METHOD__, ‘我是C类|‘; ???}}class B{ ???public function doSomething() ???{ ???????$bim = new C(); ???????$bim->doSomething(); ???????echo __METHOD__, ‘我是B类|‘; ???}}class A{ ???public function doSomething() ???{ ???????$bar = new B(); ???????$bar->doSomething(); ???????echo __METHOD__, ‘我是A类|‘;; ???}}$class = new A();$class->doSomething(); //C::doSomething我是C类|B::doSomething我是B类|A::doSomething我是A类|

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

<?phpclass C{ ???public function doSomething() ???{ ???????echo __METHOD__, ‘我是C类|‘; ???}}class B{ ???private $c; ???public function __construct(C $c) ???{ ???????$this->c = $c; ???} ???public function doSomething() ???{ ???????$this->c->doSomething(); ???????echo __METHOD__, ‘我是B类|‘; ???}}class A{ ???private $b; ???public function __construct(B $b) ???{ ???????$this->b = $b; ???} ???public function doSomething() ???{ ???????$this->b->doSomething(); ???????echo __METHOD__, ‘我是A类|‘;; ???}}$class = new A(new B(new C()));$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方法,接着做些其它工作.

总之容器负责实例化,注入依赖,处理依赖关系等工作。其实依赖注入不难理解哦。

如何理解php的依赖注入

原文地址:http://www.cnblogs.com/phpper/p/7781119.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved