Parable's Dependency Injection system is a static-based caching DI setup. However, since DI by itself is merely intended
to provide dependency injection and not necessarily caching, the following methods are available:
Get a stored instance of the requested class if it exists, otherwise create it and store it. This will also use any
cached instances for dependencies and create and store them if needed.
This will always create a new instance of the requested class, but will use/create stored instances of its dependencies
as needed. The requested class is not stored and any already stored instances will remain where they are.
This will create a new instance and will create new instances of all dependencies as well. This will not store any
of the newly instantiated classes. This is for completely clean DI.
You can also store your own version of an already instantiated class. This makes it possible to expect an interface
__construct method and before instantiating the class, storing an instance implementing that interface under
that interface's name.
The DI container also supports some other methods intended to help you deal with dependencies.
isStored($className) will return
true if the class name is already stored.
clear($className) will clear any stored instance under that name.
clearExcept($className) will clear every stored instance except the instance stored under that name.
Edit on GitHub
clearAll() will clear every stored instance.