依赖注入又叫控制反转,使用过框架的人应该都不陌生。

很多人一看名字就觉得是非常高大上的东西,就对它望而却步,今天解开他它的神秘面纱。

废话不多说,直接上代码;

上面的代码使用php的反射函数,创建了一个容器类,使用该类来实现其他类的依赖注入功能。

上面的依赖注入分为两种,一种是构造函数的依赖注入,一种是方法的依赖注入。


我们使用下面三个类来做下测试。


测试构造函数的依赖注入:


测试方法依赖注入:

从上面两个例子可以看出我们创建对象或者调用方法时,根本就不用知道该类或该方法依赖了那个类。

使用反射机制可以轻松的为我们自动注入所需要的类。


总结:

其实只要熟悉php的反射机制,依赖注入并不难实现,上面的代码为了方便理解,所以写的简单除暴,在实际的项目中肯定不会这么简单。比如:会对注入的类和参数进行配置,比如会缓存实例化过的类,下次需要该类的实例时,可以直接使用,而不用在重新初始化等等。只要你原理了解了,其他的可以随着项目的需求自己去完善。