Hi Darko, dependency injection and inversion of control is (imho) not bound to any library or framework and I agree with you that there a bunch of heavyweight frameworks does exist out there that seems to add more complexity to this topic than necessary. I'm not up-to-date with PHP (but I'm interested - what's used there for dependency injection? PHP-DI?) but in the Java world, the equivalent might be the excessive use of Spring DI in a context where it does not offer enough benefits.
Dependency injection nevertheless is a principle that exists since the 90 and simply means (imho) that you're implementing against an abstraction and not a concrete implementation which helps to write loose coupled classes and components.
A dependency injection library now is simply a helper .. an assembly to configure which concrete implementation is used by the different components of my application. I might load a specialized implementation of a database provider in one case and depending on my setup another.
I might use my DI container to inject mocks in my integration test. I agree with you, that there are solutions that are hard to grasp, the example possibly does not demonstrate the benefits using Go good enough, finally I don't like facebook either ;)
Martin Fowler offers some good lecture about the Dependency Injection Principle and Inversion Of Control (IoC) here if you're interested: http://www.martinfowler.com/articles/injection.htmlmartinfowler.com - Inversion of Control Containers and the Dependency Injection pattern