位置: 编程技术 - 正文

理解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类)

  • 个税申报本期收入指的是
  • 佣金交税吗
  • 长期股权投资收回账务处理
  • 收到营业外收入流水账怎么做账
  • 工资表只显示一个人的其他看不见
  • 会计凭证填制要求有哪些
  • 个税申报包含哪些
  • 小规模纳税人购置税控设备
  • 未分配利润的计税基础是
  • 公司转账给公司会计分录
  • 农产品收购发票上的买价含税吗
  • 园林绿化工程税点
  • 为什么中国没有工业革命
  • 高管怎么样
  • 建筑材料增值税税率
  • 凯利公式实战
  • 公司党支部的费用入账
  • 成本法追加投资交易费用
  • 酒店另外收电费
  • 事业单位收到开办费的会计分录
  • window10怎么用wifi上网
  • 怎么进入登录
  • 固定资产清理是什么项目
  • 增加间接费用科目的方法
  • 鸿蒙实用工具在哪里
  • php变量底层实现
  • 金融资产包括哪三大类及会计科目
  • 年终奖发放形式 更改 税务局
  • 软件企业职工培训费税前扣除标准
  • 短期借款转长期借款利息
  • 发票开具有误拒收后销售方如何处理?
  • 以不动产作价出资入股
  • 圣托里尼岛具体位置
  • 即征即退增值税怎么申报
  • 什么是工程施工的总纲领
  • 代垫运费算收入吗
  • 深入理解ts
  • 中兴网管操作手册
  • 企业一次性伤残补助金赔偿标准
  • 工程运维预缴增值税税率
  • 织梦模板如何安装
  • php验证码源码
  • 发票未到已付款怎么入账
  • 在哪里验证增值税票
  • 非三包退车能否退款
  • 个人所得税年底退税 可以退多少
  • 刻章费用如何做账务处理
  • 应交增值税进项税额为什么记借方
  • 非财政补助结余在资产负债表中怎么填
  • SQL SERVER使用的是( )逻辑模型
  • Mysql 创建索引锁表
  • 合同可以盖财务章子吗
  • 需要计提坏账准备的有哪些科目
  • 实收资本库存现金凭证怎么开
  • 库存商品期末余额怎么计算
  • 提取法定盈余公积会计分录
  • 固定资产无形资产处置损益计入
  • 存货跌价准备转回和转销的区别
  • 什么是大病医疗救助
  • 公司向股东借款多久必须归还
  • 内帐外帐的区别与联系
  • myeclipse连接mysql数据库代码
  • mysql 多表联合更新
  • windows10 硬件
  • 启用与禁用的英文
  • windows media player播放不了mp4
  • 工商网银登陆
  • windows8语言栏不见了
  • nodejs操作sqlserver
  • jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
  • python标准库os中的方法
  • jquery点击事件写法
  • android学习路线
  • linux开机启动进程
  • python twinter
  • unity ugui组件
  • unity方法调用
  • androidsdk的计算机
  • 河南个体工商户营业执照年检
  • 宁波银行税务贷简介
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设