PHP实现依赖注入

Posted php开发案例

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP实现依赖注入相关的知识,希望对你有一定的参考价值。



###首先,我们来看一段代码:


初始,我们都使用new 的方式在内部进行,EchoT类严重依赖于类A。每当类A变化时,EchoT类也得进行变化。 ###我们优化一下代码

PHP实现依赖注入

可以看到,这样做的话。很大程序上,我们对程序进行了解耦。类A无论你如何变动,EchoT类是不需要变动的。不再依赖于A。但是新问题又来了,我们现在只有A,万一来了B,来了CDEFG怎么办。 ###面向接口

PHP实现依赖注入

将T抽象出为接口,这样,EchoT类中的echo方法变成一个抽象的方法,不到运行那一刻,不知道他们的Method方式是怎么实现的。 ###工厂

PHP实现依赖注入


T要使用哪个是不明确的,因此,我们可以将其工厂化。【看上去很简单,在DI实际上有体现】

###DI(重点来了) 首先,我们看一下php的psr规范。

http://www.php-fig.org/psr/psr-11/

官方定义的接口

PHP实现依赖注入


仔细看上面的工厂,是不是和get($id)很一致,PHP官方将其定义为容器(Container,我个人理解,就是一个复杂的工厂)

dependency injection container

依赖注入容器

PHP实现依赖注入

PHP实现依赖注入

PHP实现依赖注入


####使用示例

PHP实现依赖注入


这个时候,会出现一个问题:


####针对接口 下面是alias方法

就此,一个简单的PHP容器就实现了。 ###个人实现代码


以上是关于PHP实现依赖注入的主要内容,如果未能解决你的问题,请参考以下文章

PHP实现依赖注入

PHP 在Swoole中使用双IoC容器实现无污染的依赖注入

PHP中的服务容器与依赖注入的思想

PHP中的服务容器与依赖注入的思想

Spring 依赖注入原理

PHP 依赖注入容器实现