Download the PHP package squidit/container-mason without Composer
On this page you can find all versions of the php package squidit/container-mason. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download squidit/container-mason
More information about squidit/container-mason
Files in squidit/container-mason
Package container-mason
Short Description PSR-11 compatible Interface to unify the creation of new container instances and objects
License MIT
Informations about the package container-mason
Container Mason
PSR-11 compatible Interface to unify the creation of new container instances and objects
Why / Use case
Currently, there are many different PSR-11 container implementations available. Unfortunately, they do not always work in the same way.
Depending on the container implementation or configuration, fetching an entry from the container can result in different instances of the requested object.
Forcing a new object instance is also not standardized by PSR-11. Depending on the container implementation, this could be a shallow new object instance, or a complete new instances with all new instantiated dependencies.
Coroutines
While implementing and working with coroutines, it is important to be in precise control of fetching objects from the container. Or supplying a coroutine with its own isolated container (depending on the implementation).
That is the reason why I created this interface.
Goal - Implementing the interface
When implementing this interface, make sure you follow the following rules
- get() method - MUST always return the same instance
- getNew() method - MUST always return a new instance with fresh dependencies (share nothing)
- getNewMulti() method - MUST work like getNew() but always returns an array with new instances as values and the requested id as array key
- getNewContainer() method - MUST always return a new container instance
Installation
You can install this package using composer:
This package does not require a specific DI container, you need to implement the provided interfaces and include your own DI container.
Example Container: PHP-DI
Link/Documentation: PHP-DI 7.
Some other PSR-11 container
Example Container: The League of Extraordinary Packages - Container
Link/Documentation: Container The PHP League.
The interface
Examples
The source directory contains two folders
- League
- PhpDi
Both folders contain an example implementation.