依赖注入与哪些事情无关?
任何你使用的现代框架,都可能严重依赖于依赖注入。但是你知道依赖注入代表的真正含义吗?或者换一个更好的角度 - 你知道依赖注入不是什么吗? 依赖容器 虽然每个现代框架都附带依赖容器 — 一个用于构建对象的大盒子 — 但这并不能保证你会按照预期的方式使用依赖注入模式。 容器让依赖项更加容易注入到类中,但是它也可能被滥用。 服务定位器模式 一种滥用服务容器的方式是从容器中拉取对象,而不是注入到当前的上下文中。该模式称之为服务定位器模式,它与依赖注入相反。 class MyController { public function indexAction() { $service = app(Service::class); // … } } 服务定位器模式向容器请求特定的对象。这将导致服务从一个难以测试的点拉取,并且,对于外部而言这就像一个黑匣子:除非你查看全部相关代码,否则你将无法了解 MyController 所依赖的外部类型。 一些框架提倡这种用法,因为在项目开始的时候它将变得简单快捷。一旦在容器中注册了成百上千个类,使用服务定位器模式将会导致混乱。而使用依赖注入将解决该问题。 更多信息,可查看我写的这篇博客: 为什么服务定位器模式是反模式. 依赖共享 接下来是一些更积极的方面:以一种更好的方式使用容器。 当依赖注入被正确使用时,外部上下文 (在许多情况下为容器)