博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php--->依赖注入(DI)实现控制反转(IOC)
阅读量:4684 次
发布时间:2019-06-09

本文共 706 字,大约阅读时间需要 2 分钟。

依赖注入(DI)实现控制反转(IOC)

DI和IOC概念理解
  • 当一个类的实例需要另一个类的实例协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。而采用依赖注入的方式,创建被调用者的工作不再由调用者来完成,因此叫控制反转,创建被调用者的实例的工作由IOC容器来完成,然后注入调用者,因此也称为依赖注入。
  • 所以DI和IOC的关系就是IOC是一种思想,而DI是实现这种的思想的方法
  • 完成依赖注入需要三方参与:一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。 某个对象指的就是任意的、普通的PHP对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序; 对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比如:对象需要的其它对象、或者是对象需要的文件资源等等
  • 常规情况下的应用程序,如果要在A里面使用C,你会怎么做呢?当然是直接去创建C的对象,也就是说,是在A类中主动去获取所需要的外部资源C($c = new C();),这种情况被称为正向的。那么什么是反向呢?就是A类不再主动去获取C,而是被动等待,等待IoC/DI的容器获取一个C的实例,然后反向的注入到A类中,A类才能去调用。

    依赖注入的实现方式
  • 构造函数注入
  • setter方法注入
  • 据经验,一般通过构造函数注入的是强依赖关系的组件,setter方式用来注入可选的依赖组件。
  • 还有较多其它方式比如:属性方式注入,回调注入,普通方法注入等等

实现

个人实现的小案例源码:

参考:

转载于:https://www.cnblogs.com/frankltf/p/8950835.html

你可能感兴趣的文章
selenium 获取断言信息
查看>>
弹出层详解,从简单到复杂
查看>>
c# 模拟get请求例子,演示Session会话状态。
查看>>
[.net 面向对象程序设计深入](0) 开篇
查看>>
C 多线程学习
查看>>
POJ3186:Treats for the Cows(区间DP)
查看>>
【stanford C++】——2.C++中函数
查看>>
监听事件android activity中键盘的监听
查看>>
bash中的转义
查看>>
浅论网站优化还有涉足百度产品的必要吗
查看>>
#Sam有话说#一握在手,话说十年
查看>>
Mysql和Oracle的卸载
查看>>
web框架
查看>>
js工具之QUnit
查看>>
使textarea支持tab键
查看>>
20165235 实验二Java面向对象程序设计
查看>>
Redis总结笔记(二):C#连接Redis简单例子
查看>>
Yahoo前端35条性能优化
查看>>
day03 Pyhton学习
查看>>
FeatureLine API
查看>>