Laravel 学习笔记:深入理解控制反转(IoC)和依赖注入(DI)

Posted DevYuan的叨叨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 学习笔记:深入理解控制反转(IoC)和依赖注入(DI)相关的知识,希望对你有一定的参考价值。

目的:解耦和减少依赖关系;


控制反转(IoC):由外部负责其依赖行为;


例如“超人”类不需要在其内部固化它的“超能力”,而是由外部来产生、组装“超能力”,再通过“超人”的某个接口中植入;


只要“超能力”满足某个接口,就能被超人所使用;


依赖注入(DI):对象的依赖,由外部以参数或其他的形式传入;


例如“超人”的构造器,接收一个实现了“超能力”接口的对象,这样所有人都能给超人制造“超能力”,只要这个“超能力”遵循“超能力”接口;


其实,IoC 和 DI 讲的差不多是同一个意思;


主角:IoC 容器;

IoC 和 DI 的概念都是为 IoC 容器做准备,Laravel 的核心就是一个 IoC 容器;

IoC 容器是一个更为先进的“工厂”,它可以根据预定的脚本,自动组装类所需要的依赖;


基本原理:我们通过注册、绑定的方式向容器中添加一段可以被执行的回调(可以是匿名函数、非匿名函数、类的方法)作为生产一个类的实例的 脚本 ,只有在真正的 生产(make) 操作被调用执行时,才会触发;


这样一种方式,使得我们更容易在创建一个实例的同时解决其依赖关系,并且更加灵活。当有新的需求,只需另外绑定一个“生产脚本”即可;

Laravel 的 IoC 容器更加高级,可以根据类的需求,自动注册、绑定符合的依赖,并自动注入到构造函数中去;


其原理也并不是很复杂,是使用了 php 的反射机制;



以上是关于Laravel 学习笔记:深入理解控制反转(IoC)和依赖注入(DI)的主要内容,如果未能解决你的问题,请参考以下文章

控制反转(IOC)/依赖注入(DI)理解

深入理解Spring IoC

深入理解IoC/DI

laravel 服务容器实现原理

14.1 Inversion of Control(IoC)的深入理解(IoC(控制反转)与DI(依赖注入)) -《SSM深入解析与项目实战》

14.1 Inversion of Control(IoC)的深入理解(IoC(控制反转)与DI(依赖注入)) -《SSM深入解析与项目实战》