mulertech/container

The MulerTech dependency injection container

1.1.1 2024-03-25 18:54 UTC

This package is auto-updated.

Last update: 2025-02-27 16:37:58 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub PHPStan Action Status Total Downloads Test Coverage

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