位置: 编程技术 - 正文

PHP控制反转(IOC)和依赖注入(DI)(php反转字符串方法)

发布时间:2024-01-12

推荐整理分享PHP控制反转(IOC)和依赖注入(DI)(php反转字符串方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php控制语句,php反转数组,php 反代,php控制反转和依赖注入,php控制语句,php反转链表,php控制反转和依赖注入,php 控制反转,内容如对您有帮助,希望把文章链接给更多的朋友!

先看一个例子:

上面代码,我们很容易理解一句话:

A类依赖B类和C类

也就是说,如果今后开发过程中,要对B类或者C类修改,一旦涉及函数改名,函数参数数量变动,甚至整个类结构的调整,我们也要对A类做出相应的调整,A类的独立性丧失了,这在开发过程中是很不方便的,也就是我们说的“牵一发动全身”,如果两个类是两个人分别写的,矛盾往往就在这个时候产生了。。。

万一真的要改动B类和C类,有没有办法,可以不去改动或者尽量少改动A类的代码呢?这里要用到控制反转。

高层模块不应该依赖于底层模块,两个都应该依赖抽象。

控制反转(IOC)是一种思想,依赖注入(DI)是实施这种思想的方法。

第一种方法叫做:构造器注入(这种方法也不推荐用,但比不用要好)

客户端类这样写:

PHP控制反转(IOC)和依赖注入(DI)(php反转字符串方法)

A类的构造器依赖B类和C类,通过构造器的参数传入,至少实现了一点,就是B类对象b和C类对象c的创建都移至了A类外,所以一旦B类和C类发生改动,A类无需做修改,只要在client类里改就可以了

假如有一天,我们需要扩充B类,做两个B类的子类

也很简单,客户端类这么写:

所以A类是不用关心B类到底有哪些个子类的,只要在客户端类关心就可以了。

第二种方法叫做:工厂模式注入(推荐使用)

我们A类代码改为:

其实已经解耦了一小部分,至少如果B类和C类的构造函数要是发生变化,比如修改函数参数等,我们只需要改Factory类就可以了。

抽象不应该依赖于细节,细节应该依赖于抽象。

把B类和C类中的方法再抽象出来,做一个接口

这样,A类中的b变量和b变量和c变量就不再是一个具体的变量了,而是一个抽象类型的变量,不到运行那一刻,不知道他们的Method方式是怎么实现的。

总结几点:

1.我们把A类中的B类对象和C类对象的创建移至A类外

2.原本A类依赖B类和C类,现在变成了A依赖Factory,Factory依赖B和C。

标签: php反转字符串方法

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

上一篇:Thinkphp结合ajaxFileUpload实现异步图片传输示例(thinkphp django)

下一篇:PHP解耦的三重境界(浅谈服务容器)(js解耦)

  • 公司税务注销流程是否要不发生业务多久
  • 缴纳个人所得税会计分录怎么写
  • 什么企业可以开增值税专用发票
  • 想要自己开厂应该怎么做
  • 蔬菜坏了还能吃吗
  • 民办非企业单位属于什么类型
  • 计提和缴纳企业所得税分录
  • 亏损可以不用缴增值税吗
  • 收到运费发票的会计分录
  • 建筑业购买车辆怎么入账
  • 买空调交税是谁交税
  • 交易性金融资产入账价值怎么计算
  • 卷式增值税发票校验码怎么查
  • 增值税普通发票有什么用
  • 员工与单位解除劳动合同书范本
  • 企业重组有什么好处
  • 注册资本使用后账务如何处理
  • 减少注册资本金程序
  • 二手店铺转让手续流程
  • 子公司资不抵债
  • 简易办法计税销售额如何填写
  • 工资结算天数
  • 银行存款账不平怎么办
  • 新会计准则下建筑业会计科目设置
  • vue框架使用方法
  • 暂时性差异的转回期间如何确定
  • 平时发票未上传怎么回事
  • php的file函数
  • 采购合同付款违约条款怎么签
  • php获取参数值的三种方式
  • 海关进口增值税如何入账
  • 事业单位财产清查内容包括
  • 新购车辆检测费计入原值吗
  • 郁金香地图
  • 金蝶怎么加人
  • 微信支付开发者平台
  • 企业取得土地使用权可能作为什么核算
  • mysql存储引擎是什么意思
  • 企业合并的会计处理方法
  • vue3+ts+MicroApp实战教程
  • mysql日志文件在哪里
  • mongodb常用命令
  • 总承包可以转包吗
  • 社保缴费是当月扣当月的吗
  • 固定资产折旧计算方法公式大全
  • 建筑安装增值税纳税地点
  • 长期股权投资追溯调整有几种情况
  • 发票先认证后入账怎么做账
  • 教育费附加计费单位
  • 资源税代扣代缴取消时间
  • 2018年所得税率
  • 测试账户收入怎么处理
  • 持有至到期投资账务处理
  • 物料损耗率计算例题及答案
  • 公司账户美金入账后怎么做分录
  • Mac下mysql 5.7.17 安装配置方法图文教程
  • linux wk
  • win7更改电脑设置在哪里
  • win1020th2
  • igfxem module是什么程序
  • win8microsoft账户
  • win7系统计算机管理在哪里
  • JQuery 又谈ajax局部刷新
  • 示例代码
  • 深入了解求助者时,首先要进行工作是
  • 深入理解javascript特性.pdf
  • jQuery插件下载
  • javascript入门书
  • jQuery Ajax 异步加载显示等待效果代码分享
  • jq 鼠标事件
  • linux给本地用户发邮件
  • python自动化监控
  • 税务局把我拉入黑名单了怎么办
  • 如何办理股权转让信息登记表
  • 国考报四川的去哪考
  • 公司的车销售给个人怎么做账
  • 写给税务局的表扬信
  • 河南省单位怎么打印社保花名册
  • 鄞江在哪里
  • 社保交五百多
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号