大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍了PHP控制反转与依赖注入如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP控制反转与依赖注入如何实现文章都会有所收获,下面我们一起来看看吧。
成都创新互联公司长期为1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为讷河企业提供专业的成都网站建设、网站建设,讷河网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
控制反转是一种思想,是一种设计模式,这种设计模式能够降低耦合性。
例如
test = new A(); //在类的内部获取依赖的对象。 //把依赖的对象写死在 Class B 中,由 Class B 选择依赖的对象,这叫做控制正转。 } } $b = new B(); $b->test->getClassName();
//输出 我是class A
class B 的构造方法依赖 class A,如果把依赖的类( class A )写死在 class B 的构造方法中,这种写法耦合性非常高,
比如
如果 class A 改名了,我们还要修改 class B 的代码。
如果class B 不需要 class A 需要 class C ,我们还要修改 class B 的代码。
为了解决这个问题,我们可以用控制反转这种设计模式。
test = $obj; //不在类的内部写死依赖的对象,而是通过外部以参数的形式传入依赖的对象,这叫控制反转。 } } $b = new B (new A()); //注入 class A 的实例 $b->test->getClassName();
//输出 我是class A
这样修改代码后,上面的两个问题也得到更好的解决。
如果 class A 改名了,我们不需要修改 class B 的代码,只需要修改传入 class B 构造方法的参数。
如果class B 不需要 class A 需要 class C ,我们不需要修改 class B 的代码,只需要修改传入 class B 构造方法的参数。
不把依赖的类( class A )写死在 class B 的构造方法中,而是在实例化 Class B 时把依赖的类(class A)以参数的形式从外部传入 class B 的构造方法中,这样在我们不需要 class A 的时候只需修改传入 class B 的构造方法的参数即可,无需修改 class B 的代码,这样就大大降低耦合性了。
其实讲人话就一句话,不要在方法中实例化类,而是通过向方法传参的方式把对象传进方法中。
至此,class B 从之前的主动选择依赖转变为被动从外部接收依赖,依赖对象的获取方式被反转,这就是控制反转。
依赖注入就把当前方法需要(依赖)的对象以传参的方式传(注)入到当前方法中。
依赖注入在上面的代码已经出现过了
$b = new B (new A()); // class B 的构造方法需要一个对象 //注入 class A 的实例
控制反转与依赖注入的关系可以用一句话来总结,可以用依赖注入实现控制反转。
关于“PHP控制反转与依赖注入如何实现”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“PHP控制反转与依赖注入如何实现”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。