位置: 编程技术 - 正文

理解php依赖注入和控制反转(thinkphp5依赖注入)

编辑:rootadmin

推荐整理分享理解php依赖注入和控制反转(thinkphp5依赖注入),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:thinkphp6依赖注入,php依赖注入的原理,php依赖注入的三种方式,php 依赖,php依赖注入的三种方式,php依赖注入的三种方式,php依赖注入的三种方式,php依赖注入的原理,内容如对您有帮助,希望把文章链接给更多的朋友!

要想理解php依赖注入和控制反转两个概念,就必须搞清楚如下的问题:

DI——Dependency Injection 依赖注入

IoC——Inversion of Control 控制反转

1、参与者都有谁?  

答:一般有三方参与者,一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。又要名词解释一下,某个对象指的就是任意的、普通的Java对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序;对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比如:对象需要的其它对象、或者是对象需要的文件资源等等。

2、依赖:谁依赖于谁?为什么会有依赖?

答:某个对象依赖于IoC/DI的容器。依赖是不可避免的,在一个项目中,各个类之间有各种各样的关系,不可能全部完全独立,这就形成了依赖。传统的开发是使用其他类时直接调用,这会形成强耦合,这是要避免的。依赖注入借用容器转移了被依赖对象实现解耦。

3、注入:谁注入于谁?到底注入什么?

答:通过容器向对象注入其所需要的外部资源

理解php依赖注入和控制反转(thinkphp5依赖注入)

4、控制反转:谁控制谁?控制什么?为什么叫反转?

答:IoC/DI的容器控制对象,主要是控制对象实例的创建。反转是相对于正向而言的,那么什么算是正向的呢?考虑一下常规情况下的应用程序,如果要在A里面使用C,你会怎么做呢?当然是直接去创建C的对象,也就是说,是在A类中主动去获取所需要的外部资源C,这种情况被称为正向的。那么什么是反向呢?就是A类不再主动去获取C,而是被动等待,等待IoC/DI的容器获取一个C的实例,然后反向的注入到A类中。

5、依赖注入和控制反转是同一概念吗?

答:从上面可以看出:依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。

下面我们通过例子来具体看看依赖注入的一些实现方式:

1.构造器注入

2、setter注入

上面俩种方法代码很清晰,但是当我们需要注入很多个依赖时,意味着又要增加很多行,会比较难以管理。

比较好的解决办法是 建立一个class作为所有依赖关系的container,在这个class中可以存放、创建、获取、查找需要的依赖关系

此时,如果获取一个book实例,只需要执行$newone = Ioc::makebook();

以上是container的一个具体实例,最好还是不要把具体的某个依赖注入写成方法,采用registry注册,get获取比较好

现在就可以通过如下方式来注册和注入一个

标签: thinkphp5依赖注入

本文链接地址:https://www.jiuchutong.com/biancheng/294857.html 转载请保留说明!

上一篇:php结合web uploader插件实现分片上传文件(Php结合wordpress开发,需要学会什么)

下一篇:php通过smtp邮件验证登陆的方法(php smtp类)

  • 费改税是哪一年
  • 海运报文是什么意思
  • 税务ukey使用教程视频
  • 资产负债表的其他流动资产包括哪些
  • 合伙律师事务所的合伙人必须是
  • 企业所得税不预缴年终汇算可以吗
  • 空调安装发票税率
  • 减半征收附加税退回的分录
  • 原材料的可变现净值等于产品可变现净值减加工费么
  • 民办职业技能培训学校办学许可证
  • 共用的水电费支出怎么算
  • 企业交税前可以扣除的费用
  • 上市公司限制性股票行权时间限制多久
  • 借款转资本公积怎么算税
  • 收到托收凭证怎么填写
  • 施工单位给你钱敢领吗
  • 加油的时候可以开发票吗
  • 营改增后的增值税税目税率表
  • 第三方代收代付平台
  • 商品流通企业会计零售业务核算
  • 增值税普通发票和专用发票有什么区别
  • 电梯管理费属什么类别
  • 在卖场当中常见的问题
  • win7为什么无法开启aero
  • 施工企业会计制度有哪些
  • win7步骤和详细教程
  • 企业重组并购条件
  • 工资结算单什么时候签
  • 居民企业境外所得税抵免限额
  • php验证码显示不出来
  • 企业固定资产账户2019年6月初借方余额5000000元
  • 应交税金应交增值税科目设置
  • php读取文件
  • conda配置虚拟环境
  • 什么叫自适应控制
  • laravel artisan命令
  • JavaScript之Ajax-axios表单提交
  • 倾向得分匹配后怎么进行回归
  • chronyc配置
  • yii2框架面试题
  • wordpress all in one
  • 税控盘减免税款结转会计分录
  • java的范式
  • 什么情况下需要做肠胃镜
  • 银行存款产生的利息收入
  • 汇算清缴银行手续费扣除比例是多少
  • 融资购入的固定资产如何记账
  • 个人缴纳公积金的方法
  • 委托代销商品的核算
  • 内部应收账款计提坏账准备的抵消例题
  • 营业外收入在汇算清缴里填哪张表
  • 企业购买新能源车免购置税吗
  • 租赁行业的成本
  • 固定总价合同与epc总承包合同区别
  • 可供分配利润是未分配利润吗
  • 购买需要安装的生产设备会计分录
  • 国家也通过国有企业利用自己的财政资金
  • 库存商品可以用多栏式吗
  • mac怎么用win系统
  • Win2003 上配置 VPN + NAT共享上网的步骤分享
  • 在Linux系统中安装MySQL
  • 利用()可以对系统进行全面的设置
  • win8怎么卸载应用程序
  • virtualbox虚拟机旋转屏幕
  • centos uuid
  • os x10.11el capitan beta3下载地址
  • 双系统怎么转移文件
  • win8删除文件不提示
  • win10系统打开安装程序没反应
  • jqueryform表单提交
  • python中print函数的end参数
  • ubuntu20.04中文
  • shell脚本替换文件中某个字符串
  • 沧州地税局领导班子
  • 如何打印纳税申报表
  • 增值税专用发票电子版
  • 房子契税发票没给怎么办
  • 国家税务总局黑龙江电子税务局下载
  • 贵州省税务局193项业务
  • 江苏税务实名认证怎么更改
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设