Laravel依赖注入深入浅出

我们在开始用Laravel时会大量用到依赖注入,由于框架做了很多工作,所以可以方便的依赖绑定和自动注入。
具体的写代码时参考文档的“服务容器”实例代码就能快速上手。但是依赖注入到底是什么?

依赖注入是一种设计模式。
《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)是软件工程领域有关软件设计的一本书,提出和总结了对于一些常见软件设计问题的标准解决方案,称为软件设计模式。该书作者为:埃里希·伽玛(Erich Gamma), Richard Helm , Ralph Johnson,John Vlissides,后以“四人帮”(Gang of Four,GoF)著称。
设计模式一般指本书中提出的3大类(创建模式、行为模式、组合模式)共23种经典的可以解决常见软件设计问题的可复用设计方案。https://www.zhihu.com/question/19558521
在2004年,Martin Fowler提出了“哪些方面的控制被反转了?”这个问题。
另外 SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖倒置)是由罗伯特·C·马丁在2009年引入的术语,指代了面向对象编程和面向对象设计的五个基本原则。

依赖倒置原则规定:
高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口。
抽象接口不应该依赖于具体实现。而具体实现则应该依赖于抽象接口。

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。

为了实现自动注入,在PHP中可以使用反射实现一个IoC容器,Laravel就是这么做的。

https://segmentfault.com/a/1190000002424023