mulertech/container

The MulerTech dependency injection container

1.1.1 2024-03-25 18:54 UTC

This package is auto-updated.

Last update: 2024-05-25 19:22:23 UTC


README

The MulerTech dependency injection container

Installation

Two methods to install Application package with composer :

Add to your "composer.json" file into require section :

"mulertech/container": "^1.0"

and run the command :

php composer.phar update

Run the command :

php composer.phar require mulertech/container "^1.0"

Usage


Initialize the container (you can give the definitions into this construct) :
$container = new Container();
or
$container = new Container($definitions);
//definitions file :
return [
new \MulerTech\Container\Definition(\Psr\Http\Server\RequestHandlerInterface::class, \MulerTech\Application\RequestHandler::class),
new \MulerTech\Container\Definition(\MulerTech\Form\Validators\MaxLengthValidator::class, null, [], true)
];

Get simple class :
$container->get(Foo::class);

Add a class with its interface (you can get this class with the interface class name) :
$container->add(FooInterface::class, Foo::class);

$fooClass = $container->get(FooInterface::class);

Add a class with arguments :
$container->add(FooInterface::class, Foo::class, ['argumentName' => 'argument value']);

Set parameters and get it :
$container->setParameter('parameter', 'a value');

echo $container->getParameter('parameter'); // a value

Use parameters into class construct arguments :
$container->setParameter('parameter', 'a value');

$container->add(FooInterface::class, Foo::class, ['argumentName' => '%parameter%']);

Load yaml files parameters into container :
$container = new Container();
$loader = new Loader();
$loader
    ->setFileList(['./path_to_files/file1.yaml', './path_to_files/file2.yaml'])
    ->setLoader(YamlLoader::class)
    ->loadParameters($container);

Set parameters with env value :
#env file :
key=value
$container = new Container();
$container->setParameter('parameter', 'env(key)');
echo $container->getParameter('parameter'); // value