When PHP applications have a lot of classes, it's important to use dependency injection techniques to keep your code maintainable and testable; rather than constructing objects within the functions they are used, pass the objects into the function via parameters.
Within this repository, a Container
is an object that can be assigned pre-constructed instances of objects, and an Injector
is an object that can automatically invoke other objects' methods with the matching instances from the Container.
There are no rules to how this repository should be used. You may want to have a single Container accessible to a single layer of your code, or you may want to have multiple Containers within your application to provide a different pool of object instances to different areas of your code.
This repository is used within WebEngine to automatically invoke Page Logic functions, allowing the developer to have a single point within the application that is responsible for the object access of all first and third party classes.