Download the PHP package romchik38/php-container without Composer
On this page you can find all versions of the php package romchik38/php-container. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package php-container
DI Container
status: ready to use
phpstan: level 8
phpunit: full
The Container
helps configure an application. The implementation is compatible with PSR-11 ContainerInterface
.
Main features:
- stores values as is (primitive, objects etc).
- creates a shared object (singleton).
- creates a fresh copy of the same class on each call.
- multi ability to create a different instance of the same class by provided keys.
- promises - container creates an instance only on a
get
call, to avoid unused creations. - can detect a circular dependency
Latest version
v2.0.0
Install
composer install romchik38/php-container
Quick examples
Primitive
Primitive
class is responsible to hold a static mixed
value. Use method add
to store it.
Shared
Shared
class is responsible to create only one instance of concrete class and returns it on each get
request. Use method shared
there.
Fresh
Fresh
class is responsible to create a new instance of concrete class on each get
request. Use method fresh
of the container.
Multi
Multi
class is responsible to create a new (or shared) copy of a concrete class with a given key. It maght be usefull when dealing with interfaces or creating a few same classes with different configuration. Use method multi
.
Promises
Promise
is responsible to defer a creation of the class's dependency. It used when a class has another class as a dependency.
Promises can be used with methods shared
, fresh
and multi
.
In the example above, we promise to add a class \SomeConnection
to the container. \SomeConnection
is a class name, but it can be any key, used with multi
method. In other words we pass a container key as a param.
Do not forget to add a \SomeConnection
Circular dependency detection
We can primise to add the first class to another, and a the second class to the first and so on. Promise chain can be as long as you want. But if you try to add a class as a promise which depends on any early promised classes an exception will be thrown.
Code quality
- phpstan level 8
[OK] No errors
- phpunit
OK (36 tests, 54 assertions)
- tested partially
- laminas-coding-standard
32 / 32 (100%)