通常, 面向对象的依赖注入,可以反向控制类,也就是说类的状态注入的类来控制。举个例子:

我们可以通过容器来实现上边的例子,如下:

这样,一看是不是很方便的从容器中,就可以把依赖的类注入到相应的类。

后期静态绑定的容器写法:

这是一个起点,这将帮助我们更好的理解laravel框架的容器。

入门文件public/index.php

bootstrap/app.php文件,代码如下:

Application就是一个基于Container的类。

该类的实现继承了容器类。

Container类实现了延迟注入、注释解析器、自动绑定。自动绑定通过PHP的反射实现的,这样就避免了维护类注入的参数问题。与此同时,单例模式、多利模式,依赖于容器非常方便的就是实现了。make和build两个方便里面涉及到递归注入依赖。

有兴趣的可以看下laravel的源码。