Extremely basic and fast implementation of the PSR-11 container standard. It's not intended to do fancy dependency injection, just the absolute bare minimum. Consider using PHP-DI or Symfony DI for a more complete implementation.
Via Composer
$ composer require netolabs/simple-container
PHP version 7.3 and up is required.
$container = new SimpleContainer();
$service = new MySuperCoolService();
$container->set(MySuperCoolService::class, $service);
if ($container->has(MySuperCoolService::class) {
$service = $container->get(MySuperCoolService::class);
}
Here we are adding an anonymous function which will be invoked the first time the definition is accessed via set()
.
The computed value will be cached for subsequent accesses.
$container = new SimpleContainer();
$container->set('myCallable', function() {
return 'a computed value';
});
$value = $container->get('myCallable');
// value is 'a computed value'
If you require the callable to be invoked every time you access the definition, you can use the resolve()
method instead.
$value = $container->resolve('myCallable');
// value is 'a computed value'
The MIT License (MIT). Please see the License File for more information.