The main reasons to use a fancy dependency-injection mechanic:
1) You have not learned how constructors work.
2) You have not learned how to break circular dependencies.
3) You really like global variables.
4) You are using a framework created by someone suffering from 1, 2, or 3 above.
@[email protected] I can kind of grudgingly be convinced they are OK in situations where your system needs to allow for both externally created plugins and has non-trivial life cycle management.
I just often (although not quite universally) feel that the wrong decision in that case was when you decided you needed that system, rather than the DI.