PSR-11 compatible Dependency Injection container.


Keywords
container, dependency, di, injection, ejz, PSR-11
License
WTFPL

Documentation

Container Travis Status for Ejz/Container

PSR-11 compatible Dependency Injection container.

Quick start

$ mkdir myproject && cd $_
$ curl -sS 'https://getcomposer.org/installer' | php
$ php composer.phar require ejz/container:~1.0

Bind an interface to an implementation:

<?php

require 'vendor/autoload.php';

$container = new \Ejz\Container();
$container->setDefinitions([
    ObjectInterface::class => ObjectClass::class,
]);
$mi = $container->get(ObjectInterface::class);
echo get_class($mi), "\n";
// will output "ObjectClass"

Bind using a Closure:

$container->setDefinitions([
    ObjectInterface::class => function () {
        return $this->get(ObjectClass::class);
    },
]);

Parameterize your Closure:

$container->setDefinitions([
    SessionInterface::class => MySession::class,
    MyInterface::class => function (SessionInterface $session) {
        return $this->get(MyClass::class, [
            'session' => $session,
        ]);
    },
]);

Authors

License

Container is licensed under the WTFPL License (see LICENSE).