Autowire and configure dependencies
Seeren\Container is a PSR-11 container interfaces implementation
composer require seeren/container
The container create, build, store and share instances
use Seeren\Container\Container;
$container = new Container();
$foo = $container->get('Dummy\Foo');
Dependencies are resolved using type declaration
namespace Dummy;
class Foo
{
public function __construct(Bar $bar){}
}
class Bar
{
public function __construct(Baz $baz){}
}
class Baz {}
namespace Dummy;
class Foo {
public function __construct(BarInterface $bar){}
}
Interfaces are resolved using configuration file by default in /config/services.json
{
"parameters": {},
"services": {
"Dummy\\Foo": {
"Dummy\\BarInterface": "Dummy\\Bar"
}
}
}
Include path can be specified at construction
project/
โโ config/
โโ services.json
Parameters and primitives are resolved using configuration file
namespace Dummy;
class Foo
{
public function __construct(string $bar){}
}
{
"parameters": {
"message": "Hello"
},
"services": {
"Dummy\\Foo": {
"bar": ":message"
}
}
}
Methods can use autowiring
namespace Dummy;
class Foo
{
public function __construct(BarInterface $bar){}
public function action(int $id, Baz $baz)
{
return 'Hello';
}
}
use Seeren\Container\Container;
$container = new Container();
$message = $container->call('Dummy\Foo', 'action', [7]);
echo $message; // Hello
This project is licensed under the MIT License