【发布时间】:2012-04-25 03:38:48
【问题描述】:
我已经看到许多框架在 php 中实现了 DI。但是,由于 php 中的所有对象都是在单个请求的生命周期内创建和销毁的,我想知道这会如何影响性能。
通常,您将在 DI 容器内定义许多对象。在 php 中,即使 Controller 不需要这些对象中的大部分,它们仍然会被实例化。 此外,如果您在 php 文件中声明 DI 依赖项,您将加载所有引用的脚本。如果没有 DI,您只会加载您需要的内容。
我看到一些框架允许惰性 DI,所以这应该有助于不需要的实例化。也许分割 DI 也是解决第一个问题的一种方法。 那么,DI 是否会对我的 php 应用程序性能产生不利影响,我应该如何在 php 中实现 DI 以使其不会发生?
【问题讨论】:
-
您的应用程序是否已达到这种额外开销实际上会导致问题的程度?或者您在编写第一个
<?php ?>标签对之前就已经担心这个问题了?不要一开始就进行微优化。 -
应用程序存在性能问题,部分大修正在重构应用程序,使其更加模块化,引入了 di fwks、学说 2 等,以便更容易维护和优化。我不希望这会带来额外的性能损失。
-
我不认为决定采用 DI 方法/框架是一种微优化。这是一个应用程序基础。
标签: php dependency-injection inversion-of-control ioc-container