当前位置:网站首页>一文搞懂│php 中的 DI 依赖注入
一文搞懂│php 中的 DI 依赖注入
2022-08-02 16:52:00 【51CTO】
目录
什么是 DI / 依赖注入
依赖注入DI
其实本质上是指对类的依赖通过构造器完成自动注入
- 通俗来说,就是你当前操作一个类,但是这个类的某些方法或者功能不是单单只靠这个类就能完成的,而是要
借助另一个类
的才能完成的 - 最直接的标志就是传参数据为对象的时候。严格来说,你
想在一个类中操作另一个类
,这两个类之间形成了相互依赖关系,传参的方式叫注入
依赖注入出现的原因
- 在未使用依赖注入的时候,
php
需要在一个类中使用另一个类的时候,往往都会进行如下操作 - 比如我在
container
类中需要用到adapter
类,就需要在使用之前进行实例化 - 如果需要用到大量的外部类,这就会造成了
耦合度太高
,很容易造成后期的维护困难
- 通俗的来讲,也就是
container
脱离不了外部类去工作,这就叫耦合度太高
简单的依赖注入
- 上面的代码耦合度太高,导致了
依赖注入
的出现,主要是为了解耦合
- 如下案例,我们只需要将所需要操作的类对象传入即可
依赖注入
操作的参数是对象
,而不是普通参数,是不是有更好的理解了- 但是这样的简单依赖注入,会造成如果你依赖的类很多,你传参的时候会很长,容易
混乱
高阶的依赖注入
- 为了解决上面
参数混乱
的问题,这时候,依赖注入进行了优化
通过魔术方法,__get
去设置对象 - 这时候,我们就可以解决依赖太多,参数混乱的问题了
依赖注入的应用
- 我们先定义一个
容器类
,主要用来向容器中注入
你想要操作的类 - 使用的时候,只需要传容器这一个
对象
即可
依赖注入高阶优化
- 在上面的应用中,我们
直接
将实例化后的对象注入容器中 - 这样会导致,所有的对象还没有被使用就会被实例化一遍,造成
资源的损耗
- 我们可以
传入闭包
,这样对象就不会被实例化而注入,当你自己需要使用的时候,再去实例化,就可以减少服务器资源的损耗
了
边栏推荐
猜你喜欢
随机推荐
golang源码分析(12)martini源码分析
QACTION_QA百科
executeScript异步执行的时候没有返回值的原因
Locking and Concurrency Control (2)
Oracle分析归档日志内容时,发现很多null?
总结嵌入式C语言难点 (1部分) 【结尾有资料】
锁定和并发控制(四)
SQL语句基础
实时数仓架构演进及选型
npm install报gyp info it worked if it ends with ok
Detailed explanation of the principle of JWT_The principle of electromagnetic induction
Redis进阶之路:深度解析Redis单线程架构,图文并茂不能再清晰了
Timestamp formatting "recommended collection"
navicat creates a connection 2002-can't connect to server on localhost (10061) and the mysql service has started the problem
电烙铁的基础知识
Common software silent installation parameters
默认参数的代码实现及日期的注入与显示
Pytest study notes
Kubernetes:(五)Pod进阶(资源限制、健康检查)
npm install 报错问题解决合集