PHP 控制反转与依赖注入详细分析与代码实现

PHP有很多的设计模式,比如单例模式,订阅模式,策略模式,工厂模式,观察者模式,这些设计模式其实无非都是为了让程序简化,容易维护,模块间解耦。现在我们来讲讲PHP的另外一种设计模式,控制反转/依赖注入,这两者其实是同一个概念,只是凶不同的角度去解释的而已。

依赖注入:是从需要实现的业务逻辑上面去解释的,你实现这个逻辑,需要将写好的某个模块,也就是你依赖的功能服务者,注入到程序容器中去,然后去使用这个注入的依赖。

控制反转:是从容器方面来解释的,在你去注入依赖的时候,其实不是业务程序自己去一个一个的去注入的,而是容器将注入进来的依赖反注入到程序中去,这个反注入的含义其实就是执行某个依赖的中的方法(一般都是所有依赖都要约定的方法,比如register),将这个依赖所需要的一些属性,参数等,再次注入到容器中,这个过程就有点反过来的意思,控制反转就是这么来的。
 

下面我们来看看程序的实现。。。

比如微信支付的依赖服务

在使用的时候可以new一下容易缔造类,它会自动去注入这些服务,

 这个时候容器就会调用register方法去注入对应的依赖服务

然而,容器里面的register方法其实是将注入进来的依赖服务里面的约定好的方法实现, 

 这个依赖服务里面的这个方法其实就是讲服务需要的一些东西注入到容器里面,注意,他传入的是$this,这个$this其实就是容器container 自己本身。这样就实现了控制反转/依赖注入。

理解有限,有不同的看法,欢迎指正。

猜你喜欢

转载自blog.csdn.net/weixin_42227665/article/details/83548118
今日推荐