1

我正在一个用 PHP 编码的网站上工作,并且一直在阅读Dependency Injection。但是,我不明白反对这种情况的原因:

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

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

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

4

1 回答 1

0

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

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

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

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

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

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

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

于 2013-10-21T09:58:10.597 回答