Rather than triggering a flamewar on what DI framework is "best" (I don't think there's a definitive general solution), this question is meant to discuss good alternatives for projects of different kinds, no matter the programming language, based on professional experience.
Some issues I'd like to lean about:
- What were the most important features you were looking for in a DI framework? Why was it what best fitted your project?
- What does the DI framework have that others do not? What makes it special?
- Why would you not pick the same DI framework for other different projects?
- How did the DI framework improve the testability and configuration flexibility of the application (especially on different environments: development, staging, production, etc.)?
- Many DI frameworks are said to be simple. But how easy is it to maintain the configuration of dependencies? (For example: Is it too verbose or difficult to read and modify?)
I may eventually accept one answer, but there is no "best answer" on this topic. I would appreciate anyone's experience that is useful to share.
I'm particularly interested in experience with DI frameworks in Python and PHP, where I think the choice isn't very straight-forward. The question is language-agnostic, though.