位置: 编程技术 - 正文

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

  • 非居民纳税人是小规模纳税人
  • 对公账户要收手续费吗
  • 文化建设税怎么填
  • 境外企业转让非居民企业
  • 销售大型设备的税率
  • 委托加工物资增值税怎么算
  • 个人转让商铺个人所得税核定征收
  • 公司拓展训练入什么会计科目核算做分录?
  • 追加的固定资产当月计提折旧吗
  • ktv的发票可以报销吗
  • 企业出租收入增值税税率
  • 非盈利组织纳税筹划
  • 政府会计提取专用基金
  • 金融机构可以采取什么措施
  • 间接生产费用包括
  • 高新补贴是什么意思
  • 鸿蒙的usb调试
  • 监事会成员是什么人
  • 优先股股息发放是啥意思
  • PHP:xml_set_notation_decl_handler()的用法_XML解析器函数
  • mstore.exe - mstore是什么进程 有什么用
  • 企业核定征收管理办法
  • 预收外汇如何结汇
  • php中??
  • 截图快捷键ctrl+alt+
  • thinkphp invoke
  • 给企业法人缴纳社保流程
  • 若依项目制作饼状图和柱状图
  • 企业债权人进行财务分析的根本目的是关心企业的
  • 广告代理费收取比例
  • 补交当年的增值税
  • 递延收益期限
  • 改造后的固定资产入账价值
  • phpcms目录结构
  • mongodb使用场景 简书
  • 建筑总承包分包单位可以是市政总承包吗
  • 银行电子承兑到期后怎么操作
  • 加计抵减可以结转吗
  • 工程施工的间接费用如何归集分配
  • 一般纳税人应交税费二级科目有哪些
  • 幼儿园园服已发给孩子怎么通知家长
  • 金税四期的主要内容
  • 一般纳税人企业所得税税率2023
  • sql中的聚合函数
  • 工程施工的间接费用年底可以不结转吗
  • 一个公户从农业银行开户
  • 预收款开发票,不确认收入可以吗?
  • 递延收益金额怎么算
  • 有外经证还要缴纳企业所得税吗
  • 收到预付卡的发票是否可以报销呢?
  • 员工外出培训报告范文
  • 多收发票会计分录
  • 劳务派遣人员能有营业执照吗
  • sysbench内存性能测试
  • sql server复制数据库的方法
  • win8系统如何激活
  • win8激活点不进去
  • 哪个是win8.1更新win10的补丁
  • 破解xp系统密码
  • vista和win7哪个对配置要求高
  • 通用pe工具箱安装win7
  • vmstat命令
  • ftp 550错误
  • macbook不可以插u盘吗
  • perl入门
  • 微信小程序实现账号密码登录
  • 一个简单的群规内容
  • 安卓开发遇到的问题
  • node.js中的http.response.addTrailers方法使用说明
  • 电子词典笔哪个品牌好
  • jquery正则表达式的用法
  • python数据结构与算法题库
  • javascript data
  • 安卓app性能测试
  • python模拟登陆并抓取
  • Jquery实现select multiple左右添加和删除功能的简单实例
  • android开发框架mvp
  • 单位医保账号怎么注销掉
  • 怎么查询地方规划用地
  • 浙江省国税局地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设