位置: 编程技术 - 正文

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

  • 汇算清缴所得税退回做账
  • 土地增值税常见问题及解答
  • 小规模企业所得税计算
  • 只有费用没有收入成本怎么填所得税
  • 计提跌价的存货卖出了
  • 股东向企业借款属于关联交易吗
  • 高新技术企业研发人员占比
  • 公司注销时发现很多年前多发了员工的工资
  • 资本金利润率多少
  • 哪些费用可以计入待摊费用
  • 税款不申报会怎样
  • 工程项目立项前包括哪几个过程
  • 资产的税务处理要注意什么
  • 税控盘费用抵减增值税
  • 国税网不能打印,怎么设置
  • 企业支付短期借款利息1000元
  • 管理费用的结转需要在明细账中体现吗
  • 企业之间的无偿借贷行为,作为借款方需要缴纳哪些税
  • 无法查明原因现金盘盈计入什么科目
  • 如何查看windows10
  • 建筑企业分包工程的纳税人
  • 固定资产折旧计算方法
  • 工商年报的纳税总额怎么查询
  • 怎样提取word中的图片
  • php实现上传图片到数据库
  • 两台mac怎么一起用
  • 世界上最早的计算机是
  • 资本公积转增资本金
  • 企业清算分配的财产金额怎么算出来
  • 企业借给个人钱合法吗
  • 将自产的应税消费品用于连续生产应税消费品
  • 收车船税是什么
  • 观察者模式java实现
  • 图书管理系统的软件结构图
  • 煤矿安全费用提取规定
  • js中的定时器
  • ts类型声明 要为某个文件里的变量声明吗
  • 我的十年怎么写
  • php对象是什么类型的数据
  • 研发支出放在资产负债表哪里
  • 人民法院司法警察警用装备
  • 公司承担员工的社保费会计分录
  • sql server nullif
  • 没有以前年度损益调整怎么办
  • sql语句取并集
  • 白酒行业销售赠礼方案
  • 水电发票如何开
  • 城镇土地使用税减免税政策
  • 支付的中介费进什么科目
  • 个税里的年金是指
  • 企业营改增税率是多少
  • 社保年度汇算清缴怎么做
  • 金蝶软件标准版多少
  • 没报税可以先清卡吗
  • 营业费用这个科目还在用吗
  • 生产企业下单就做收入没交货怎么做账
  • 公司买车贷款要看法人征信吗
  • sql cast,convert,QUOTENAME,exec 函数学习记录
  • win8装机软件
  • winxp系统怎么连接网络
  • win10系统打开图片内存忽大忽小
  • macbook快捷操作大全
  • 教程:如何在Win10 PC上玩Pokémon Go游戏
  • 代理服务器只能代理客户端http的请求
  • windows打开
  • win7系统怎么锁定屏幕
  • android快捷键设置
  • Bullet(Cocos2dx)之交叉编译Android,集成到cocos2dx3.x
  • Node.js中的construct
  • button按钮类型
  • bat 批处理文件
  • jQuery扩展实现text提示还能输入多少字节的方法
  • 查cpu内存命令
  • unity3d开发流程
  • jquery图片轮播无缝连接
  • Android StateMachine解析( 1 )
  • 江苏省国家税务局官网
  • 开票内容 大类
  • 受让企业与转让企业区别
  • 个人所得税app密码给别人有风险吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设