Skip to content

mulertech/container

Repository files navigation

Container


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

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages