使用一个或两个全局可以吗?

时间:2013-10-21 05:12:30

标签: php dependency-injection global

我正在开发一个用PHP编码的网站,并且一直在阅读Dependency Injection。但是,我不理解反对这种情况的理由:

我有一个脚本,当前有2个全局变量(一个是数据库连接,另一个存储从数据库中提取的当前用户数据)。这两个全局变量分别用于除我的一个或两个类之外的所有变量。用DI实现这些全局对象的想法听起来像很多额外的打字而没有真正的奖励;最多2个额外的参数传递给我的大多数类,以及最多2个额外的属性来保存这些注入的依赖项。

我不是在问这个,因为我想借口不必重做全局,我问这个是因为我真的想知道:

如果脚本中的几乎每个对象都使用了少量对象,那么将这些对象设为全局是否可以?在这种情况下,使用DI而不是全局变量有什么好处?

1 个答案:

答案 0 :(得分:0)

要回答您的标题:使用一个或两个全局可以吗?,我会回答。如果你想使用DI,可以在任何地方使用它。你遇到的困难是正常的,但你可以克服它们。

从全局变量(或单例)切换到DI需要重新考虑应用程序的体系结构。

之前,您有一个全局$db变量,以及许多使用它的类。

如果你只是使用依赖注入并将$db注入到所有内容中,那就是很多工作。

我建议您使用容器,其作用是构建您的对象,以便注入其依赖项(并且您无需在任何地方自行完成)。

但接下来的“进化”是你应该从容器中获取所有对象(以便它们注入所有依赖项)。

现在的问题是:值得吗?我会让你判断,DI可以帮助你建立“更好”的应用程序(更可维护,可测试......),这是你想要的吗?