美文网首页
听欢哥讲PHP之轻松搞定依赖注入

听欢哥讲PHP之轻松搞定依赖注入

作者: 司马东阳 | 来源:发表于2017-05-27 12:02 被阅读62次

看到网络上很多“依赖注入”解释的话题,这篇博客呢也只是我自己的观点,如果你有不同的观点请拍砖,不用客气。

业务场景

小明要去旅游,但是还未确定以什么方式出游,有可能是徒步旅行,也有可能是自驾游。

代码演示

根据步行和驾车的速度来考虑距离旅游目的地的路程,所以这里定义了两个属性$speed和$distance。所有有了如下代码:

interfacetravelInterface{publicfunction__construct($speed,$distance);publicfunctionrun();

}abstractclasstravelimplementstravelInterface{protected$speed;//最高时速protected$distance;//最远路程publicfunction__construct($speed,$distance)

{$this->speed =$speed;$this->distance =$distance;

}

}classdriveextendstravel{publicfunctionrun()

{echo"自驾游";

}

}classwalkextendstravel{publicfunctionrun()

{echo"徒步旅行";

}

}

那么,如果需要换一种出行方式的时候,则需要修改human类。这里看起来修改非常简单,但是我们实际项目中可能会夹杂着很多的业务逻辑一起修改。

就说下依赖注入的基础方式

classhuman

{protected$travel;//出行方式publicfunction__construct()

{$this->travel =newdrive(60,1000);

}publicfunctiontraveling(){$this->travel->run();

}

}$xiaoming=newhuman();$xiaoming->traveling();

什么是依赖注入。

简单的说:在A类中使用了B类的实例时,B对象的构造不是在A类某个方法中初始化的,而是在A类外部初始化之后以B类的对象传入进来。这个过程就是依赖注入。

换一种通过配置文件来实现控制反转

classhuman

{protected$travel;//出行方式publicfunction__construct(travel$travel)

{$this->travel =$travel;

}publicfunctiontraveling(){$this->travel->run();

}

}$travel=newdrive(60,1000);$xiaoming=newhuman($travel);$xiaoming->traveling();

通过上面的方式,以什么方式旅行,只需要修改配置$config就行。

这在我们PHP里感触不明显,觉得修改$config和修改$travel = new drive(60,1000)差别不到,一方面是便于管理,另一方面是PHP的非编译型的特性优势。如果用Java来实现,感触就非常明显了,比如程序已经打包了,只需要修改配置文件,就可以控制类的依赖关系了。(千锋PHP培训)起到了解耦的作用。

虽然很多时候大家一说到控制反转,依赖注入,就非要和说到反射,我觉得上面IOC只是一种思想,具体的实现方式,在不同的语言中有不同的表现形式。只要将这种依赖关系解耦出来,可以配置化就是IOC的实现了。

相关文章

  • 听欢哥讲PHP之轻松搞定依赖注入

    看到网络上很多“依赖注入”解释的话题,这篇博客呢也只是我自己的观点,如果你有不同的观点请拍砖,不用客气。 业务场景...

  • 听欢哥讲PHP之轻松搞定cURL

    cURL是一个利用URL语法规定来传输文件和数据的工具,支持很多协议和选项,如HTTP、FTP、TELNET等,能...

  • 听欢哥讲PHP之轻松搞定网站缓存处理

    关于浏览器缓存 浏览器缓存,有时候我们需要他,因为他可以提高网站性能和浏览器速度,提高网站性能。但是有时候我们又不...

  • 听欢哥讲PHP之ajax

    XMLHttpRequest cannot load file:///D:/WWW/angularlx/ui-ro...

  • 听欢哥讲PHP之魔术方法

    魔术方法是PHP面向对象中特有的特性。它们在特定的情况下被触发,都是以双下划线开头,在此做了下总结,向大家分享下 ...

  • 听欢哥讲PHP之cookie问题

    PHP中的cookie必须刷新才能生效的问题,``` 这里输入代码 // php COOKIE设置函数立即生效,...

  • 听欢哥讲PHP之nginx配置

    假设我们用PHP实现了一个前端控制器,或者直白点说就是统一入口:把PHP请求都发送到同一个文件上,然后在此文件里通...

  • 听欢哥讲PHP之header头信息

    header函数在php中是发送一些头部信息的, 我们可以直接使用它来做301跳转等,下面我来总结关于header...

  • 听欢哥讲PHP之nginx配置直播服务

    近年互联网直播业务非常火热。我也研究了下,发现nginx上配置视频直播点播也很容易实现,特分享一下。 一、ubun...

  • 听欢哥讲PHP页面静态化

    页面静态化 1、什么是PHP静态化 PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在用户面前。 ...

网友评论

      本文标题:听欢哥讲PHP之轻松搞定依赖注入

      本文链接:https://www.haomeiwen.com/subject/iuqqfxtx.html