php实现分布式服务 (php依赖注入知乎)

摘要:「左右脑年龄测试」风靡朋友圈,到底科学不科学?「左脑负责语言、右脑负责图像」的理论到底正确么?如何用程序员的方式完美解答这一疑惑呢?

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

php实现mysql数据库连接,php依赖注入知乎

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

php实现mysql数据库连接,php依赖注入知乎

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

php实现mysql数据库连接,php依赖注入知乎

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

php实现mysql数据库连接,php依赖注入知乎

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

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

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

官方定义的接口

php实现mysql数据库连接,php依赖注入知乎

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

dependency injection container

依赖注入容器

php实现mysql数据库连接,php依赖注入知乎

php实现mysql数据库连接,php依赖注入知乎

php实现mysql数据库连接,php依赖注入知乎

####使用示例

php实现mysql数据库连接,php依赖注入知乎

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

php实现mysql数据库连接,php依赖注入知乎

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

php实现mysql数据库连接,php依赖注入知乎

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

想看更多精彩内容就关注我吧 或者搜索微信公众号:php开发案例 更多精彩等你来

php实现mysql数据库连接,php依赖注入知乎