1. DI概念
DI(Dependency Injection)即为依赖注入,依赖注入的基本原则是应用组件不应该负责查找资源或者其他依赖的
协作对象。配置对象的工作应该由容器负责,查找资源的逻辑应该从应用组件的代码中抽取出来,交给容器来完
成。DI是对IoC更准确的描述,由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来
更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。屏蔽调用组件的复杂性
例如:
User 对象查询用户信息的需要数据库的连接对象,以前的过程中我们都是自己编写代码来获得一个 Connection
对象,有了 laravel 我们就只需要告诉 laravel , User 中需要一个 Connection ,至于这个 Connection 怎
么构造,何时构造, User 对象不需要知道。
在系统初始化运行时, laravel 会在需要使用的时候制造一个 Connection ,然后像打针一样,注射到 User 当
中,这样就完成了对各个对象之间关系的控制。 User 需要依赖 Connection 才能正常运行,而这个
Connection 是由 laravel 注入到 User 中的,依赖注入的名字就这么来的。
依赖: 一个类需要另一个类才能进行作业
什么叫做依赖注入?
只要不是由内部生产(比如初始化、构造函数 __construct 中通过工厂方法、自行手动 new 的),而是由外部以参数或其他形式注入的,都属于依赖注入(DI) 。
是不是豁然开朗?事实上,就是这么简单。下面就是一个典型的依赖注入:
// 超能力模组 $superModule = new XPower;
// 初始化一个超人,并注入一个超能力模组依赖 $superMan = new Superman($superModule);