是否可以使用一个或两个全局变量


Is It OK to Use One or Two Globals?

我正在一个用PHP编码的网站上工作,并且一直在阅读有关依赖注入的信息。但是,我不明白针对这种情况的原因:

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

我不是在问这个,因为我

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

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

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

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

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

如果您只是使用依赖注入并将$db注入到所有内容中,则需要大量工作。

我建议您使用容器,其工作是构建对象,以便注入它们的依赖项(并且您不必在任何地方自己执行此操作)。

但是下一个"演变"是你应该从容器中获取所有对象(以便它们注入所有依赖项)。

现在的问题是:值得吗?我会让你判断,DI可以帮助你构建"更好"的应用程序(更易于维护,可测试,...),这是你所追求的吗?