本篇文章小编将带大家学习一下PHP中的控制反转以及依赖注入的使用,感兴趣的小伙伴赶紧来看看吧!

控制反转:控制权交给了自己的类

依赖注入:依赖另一个类,我没有手动去new它

/*我自己要用的类*/

class User {

private $name;

private $age;

public function __construct($name,$age){

$this->name=$name;

$this->age=$age;

}

public static function createResource($conf) {

return new self($conf['name'],$conf['age']);

}

public function says(){

echo $this->name;

}

}

$conf=array(

'name'=>'taoshihan',

'age'=>10

);

/*把这个地方放到一个类里,它就是个容器的概念了*/

/*体现了控制反转,所有的操作都是我自己的类里面进行的处理,不需要在调用的时候处理*/

/*这里也体现了依赖注入,就是我不手动去new对象了,我是在下面的方法中获取的对象*/

$user=call_user_func_array(array('User', "createResource"), array($conf));

$user->says();

相关课程:PHP视频教程

控制反转 php,[PHP学习] 控制反转以及依赖注入的日常使用相关推荐

  1. 3、什么是控制反转(IoC),什么是依赖注入

    (1)控制反转是应用于软件工程领域的,在运行时被装配器对象用来绑定耦合对象的一种编程技巧,对象之间的耦合关系在编译时通常是未知的.在传统的编程方式中,业务逻辑的流程是由应用程序中早已被设定好关联关系的 ...

  2. 我的angularjs源码学习之旅2——依赖注入

    依赖注入起源于实现控制反转的典型框架Spring框架,用来削减计算机程序的耦合问题.简单来说,在定义方法的时候,方法所依赖的对象就被隐性的注入到该方法中,在方法中可以直接使用,而不需要在执行该函数的时 ...

  3. 《Pro ASP.NET MVC 3 Framework》学习笔记之五【依赖注入及ninject工具使用】

    一,创建松耦合的组件 1."分解关注点"是MVC模式里面一个非常重要的特性.我们想要在应用程序里面创建的组件尽可能的独立,这样我们就能管理比较少的依赖关系.理想情况下,每个组件都是 ...

  4. angular学习(六)—— 依赖注入

    转载请写明来源地址:http://blog.csdn.net/lastsweetop/article/details/53409171 依赖注入 依赖注入(DI)是一种处理组件如何获得依赖的软件设计模 ...

  5. spring框架学习(二)依赖注入

    spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入.接口注入不作要求,下面介绍前两种方式. 1,set注入 采用属性的set方法进行初始化,就成为set注入. 1)给普 ...

  6. angular4 学习日志(一 依赖注入)

    1.创建一个服务,为了好管理建一个名叫services的文件夹管理所有服务: ng g service services\person 2.在服务中定义一个person 类 : 3.在app.mdul ...

  7. Angular2学习笔记(六) Angular2 依赖注入

    2019独角兽企业重金招聘Python工程师标准>>> 在java的世界中我们有spring的DI神器,而在angular的世界中我们同样有DI,由于这里文章篇幅偏大,只捡主要的讲解 ...

  8. Angular学习笔记四之依赖注入与服务

    一.依赖注入 (一)依赖注入理解 先来看一段代码: class Engine {// Engine类的构造函数,需要接受一个number类型的参数constructor(speed: number) ...

  9. Android进阶之光学习记录——注解与依赖注入框架ButterKnife的尝试

    ⚠️创建的模块是java模块而非Android Library,如果创建的是后者,则无法使用AbstractProcessor 按照书上讲述的,想要自己去仿写一下butterknife 最终的项目结构 ...

最新文章

  1. [jqpolt] formatString 日期格式化列表
  2. Qt4程序在windows平台下打包发布
  3. relation does not exist报错是什么意思_为什么Zookeeper天生就是一副分布式锁的胚子?...
  4. 用html5做一个简单网页_用新款ws2812灯带做一个简单的窗花
  5. DenyHosts清除黑名单IP地址方法
  6. 误删除了Oracle的dbf文件后的解决方法
  7. NCH MixPad Masters for Mac - 录音和混音软件
  8. 二级c语言改错题库,二级C语言题库-改错题(参考).doc
  9. 【2015-18年腾讯招聘】腾讯产品策划类笔试面试题整理
  10. AR、VR,到底哪个才是未来的发展趋势?
  11. 【动画消消乐|CSS】083.纯CSS实现卡通齿轮效果
  12. Thinkphp仿众图网图片素材下载站源码+自适应手机端
  13. C++核心准则​Pro.bounds:边界安全群组
  14. 计算机动漫游戏与制作,计算机动漫与游戏制作标准规范.doc
  15. Bert中文文本多分类与传统BOW+tfidf+LR中文文本多分类对比
  16. p2.第一章 Python基础入门 -- 冯诺依曼体系和计算机基础 (二)
  17. pycharm调试模式
  18. python快速爬虫视频_“python怎么快速爬虫视频“python 爬网页视频教程
  19. Linux DSA Net Switch驱动开发
  20. 自动控制原理概念梳理(保研面试用)

热门文章

  1. RMI 异常 no security manager: RMI class loader disabled
  2. 面向科研的推荐系统Benchmark诞生!
  3. PyTorch系列入门到精通——张量操作线性回归
  4. 研究生必备自学课程!打好科研的数学基础与机器学习基础!
  5. PyTorch实战福利从入门到精通之三——autograd
  6. 腾讯广告“虚拟IP”赛题突出重围,入选第七届“互联网+”双创大赛产业命题
  7. 独立站适合做B端吗?外贸B2B独立站怎么做?
  8. vscode取消底部横滚动条(自动换行)
  9. RxJS的另外四种实现方式(一)——代码最小的库
  10. selenium学习过程中遇到的问题