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

laravel.jpg

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

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

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

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

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

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

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

主角:IoC 容器;

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

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

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

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

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

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

Laravel 服务容器实例教程 —— 深入理解控制反转(IoC)和依赖注入(DI)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 容器,字面上理解就是装东西的东西。常见的变量、对象属性等都可以算是容器。一个容器能够装什么,全部取决于你对该容器的...
    拉风的老衲阅读 437评论 1 3
  • 先说几句废话,调和气氛。事情的起由来自客户需求频繁变更,伟大的师傅决定横刀立马的改革使用新的框架(created ...
    wsdadan阅读 3,126评论 0 12
  • 前段时间朋友圈被这句话刷了屏,竟然还有大神拿它来做签名。阿夏当时立马对着床头的镜子看了又看,终于知道自己为啥幼儿园...
    少年老徐阅读 453评论 0 1
  • 1、react-native -v查看当前版本2、进入到项目根目录执行npm install3、在项目根目录执行r...
    RonnieSir阅读 331评论 0 0
  • 如果再活一次,我宁愿自己是个没有历史的人,到了该结婚的年纪找一个合适并且相处不累的人 好好爱到结婚。就像我们父母那...
    __凉烟阅读 177评论 0 0