gorka/pimp

Simple Dependency Injection Container

v3.0.2 2015-10-06 06:22 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.

Build Status Code Coverage Scrutinizer Code Quality

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