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).