gorka / pimp
Simple Dependency Injection Container
Requires
- php: >=5.5.0
- beberlei/assert: ^2.4
- container-interop/container-interop: ^1.1
Requires (Dev)
- ext-xdebug: >=2.1.4
- halleck45/phpmetrics: ^1.3
- henrikbjorn/phpspec-code-coverage: ^1.0
- phing/phing: ^2.12
- phpspec/phpspec: ^2.3
- phpunit/phpunit: ~4.6
- sensiolabs/security-checker: ^3.0
- sjparkinson/static-review: ^5.1
- squizlabs/php_codesniffer: ^2.3
Provides
This package is not auto-updated.
Last update: 2021-07-24 00:55:16 UTC
README
⚠️ This project is unmaintained and might eventually be removed. Use it at your own risk.
Pimp: Simple Dependency Injection Container
Pimp is a PHP dependency injection container inspired by Pimple, with a Container Interop turn to it.
Backwards compatibility note
Version 3.0.0 has introduced a major backwards compatibility break to comply with container interop specification. On previous version of Pimp config values could be introduced in the container itself; this is no longer possible, please use a config manager instead.
Installation
Using composer, inside your project root run:
composer require gorka/pimp
Container
Simple use case:
use Gorka\Pimp\Container;
use Gorka\Pimp\ServiceFactory;
$container = new Container([
'serviceOne' => function ($c) {
return new MyService();
},
'serviceTwo' => function ($c) {
return new MyOtherService($c->get('serviceOne'));
}
]);
$service = $container->get('serviceOne');
You may also add new services or service factories after initialization:
$container->add('ServiceThree', function() { return new MyAwesomeService(); });
By default, Pimp will return same instance each time you call get(). If you want to get a new instance each time you may use a ServiceFactory instead:
$service1 = $container->get('ServiceOne');
$service2 = $container->get('ServiceOne');
var_dump($service1 === $service2); // true
$container->add(
'ServiceFour',
ServiceFactory::create(
function($c) {
return new MyAwesomeService();
}
)
);
$service1 = $container->get('ServiceFour');
$service2 = $container->get('ServiceFour');
var_dump($service1 === $service2); // false