php - 控制反转 : Have you ever had to decide what Dependency Injection framework is best for a project? 您选择了哪一个,为什么?

标签 php python frameworks dependency-injection

这个问题并不是要引发关于什么是“最好”的 DI 框架的争论(我认为没有一个明确的通用解决方案),而是为了讨论不同类型项目的良好替代方案,无论使用哪种编程语言,基于关于专业经验。

我想了解的一些问题:

  • 您在 DI 框架中寻找的最重要的功能是什么?为什么它最适合您的项目?
  • DI 框架有什么其他框架没有的?它有何特别之处?
  • 为什么您不为其他不同的项目选择相同的 DI 框架?
  • DI 框架如何提高应用程序的可测试性和配置灵活性(尤其是在不同环境下:开发、登台、生产等)?
  • 许多 DI 框架都被认为很简单。但是维护依赖项的配置有多容易呢? (例如:是否太冗长或难以阅读和修改?)

我最终可能会接受一个答案,但这个主题没有“最佳答案”。如果有人能分享有用的经验,我将不胜感激。

我对 Python 和 PHP 中的 DI 框架的经验特别感兴趣,我认为选择并不是很直接。不过,这个问题与语言无关。

最佳答案

我通常使用以下标准选择框架,无论是 DI 还是其他框架:

  1. 选择一个具有手头工作所需功能的框架
  2. 更喜欢简单的框架 - 1. 不需要的“额外”东西越少越好。
  3. 优先选择“内置”框架,而不是您已经使用的语言/框架。
  4. 更喜欢我已经了解并使用过的框架

通常,通过上述操作,结果就很明显了。例如,我最后选择的 DI 框架是 MEF,主要是因为它是一个 C# 项目(第 3 点),它很简单,而且它做了我需要它做的事情。

关于php - 控制反转 : Have you ever had to decide what Dependency Injection framework is best for a project? 您选择了哪一个,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4738980/

相关文章:

php - Laravel 无法将数据发送到 Controller

python - 使用 Python BeautifulSoup 库解析 Span HTML 标签中的信息

python - 如何知道 reactor 在 python 中是否正在运行?

java - 警告 : No mapping found for HTTP request with URI [/SpringTest/add] in DispatcherServlet with name telusuko

objective-c - 任意对象和属性的非 CALayer 动画框架

php - 向所有 json_encode() 数据添加一个通用词

javascript - 黑客如何将 javascript 代码注入(inject)我的 homepage.php

php - 从选项中选择多个选项

python - 狮身人面像 : What is the cause for 'WARNING: duplicate object description' ?

iOS: "Include of non-modular header"与 libxml