Download the PHP package mcustiel/php-simple-di without Composer
On this page you can find all versions of the php package mcustiel/php-simple-di. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download mcustiel/php-simple-di
More information about mcustiel/php-simple-di
Files in mcustiel/php-simple-di
Package php-simple-di
Short Description Minimalist library to manage dependency injection with low memory usage and high performance.
License GPL-3.0+
Informations about the package php-simple-di
php-simple-di
What is it?
php-simple-di (Php Simple Dependency Injection) is a library that provides a minimalistic dependency container with the ability to provide singleton or prototype versions of the dependencies identifying them by a name. php-simple-di provides a singleton class where you can register your dependencies, indentifying them by a name and then you can retrieve them. This library only creates instances on demand (it does not instanciate dependencies that are not needed for a request execution), so you only process and have in memory what you are using.
Installation
Composer:
How to use it?
Registering
In your bootstrap file (or some startup script) you must define all the possible dependencies that your classes might need.
Getting dependencies
Then you can retrieve instances by refering them through their identifier.
Instances
php-simple-di creates "singleton" instances by default, this means everytime you request for a dependency it will return the same instance every time. If by any chance you need to change this behavior, you can define that every time you asks php-simple-di for a dependency it will return a new instance. This behavior is changed through a boolean parameter in register method.
Singleton behavior
Prototype behavior
Notes
To simplify the previous examples I've shown config as previously obtained, but php-simple-di is perfectly capable of enclosing that functionality inside callbacks, even calling itself:
There's a lot of discussion around Singleton pattern, mentioning it as an antipattern because it's hard to test. Anyway, php-simple-di provides the container as a singleton class to allow just a single instance to be part of the execution. You should think in good practices and avoid using this class through singleton, but define it in your bootstrap file and pass the container instance as a parameter to your application dispatcher and always pass it as a parameter (injecting it as a dependency). Then, remember to use it properly, don't pass the container as a dependency, but use it to obtain the dependencies and pass them to your services.