Download the PHP package dotkernel/dot-dependency-injection without Composer
On this page you can find all versions of the php package dotkernel/dot-dependency-injection. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download dotkernel/dot-dependency-injection
More information about dotkernel/dot-dependency-injection
Files in dotkernel/dot-dependency-injection
Package dot-dependency-injection
Short Description DotKernel dependency injection component using class attributes.
License MIT
Homepage https://github.com/dotkernel/dot-dependency-injection
Informations about the package dot-dependency-injection
dot-dependency-injection
DotKernel dependency injection service.
This package can clean up your code, by getting rid of all the factories you write, sometimes just to inject a dependency or two.
Installation
Install dot-dependency-injection
by running the following command in your project directory:
After installing, register dot-dependency-injection
in your project by adding the below line to your configuration
aggregate (usually: config/config.php
):
Usage
Using the AttributedServiceFactory
You can register services in the service manager using AttributedServiceFactory
as seen in the below example:
NOTE
You can use only the fully qualified class name as the service key
The next step is to add the #[Inject]
attribute to the service constructor with the service FQCNs to inject:
use Dot\DependencyInjection\Attribute\Inject;
The #[Inject]
attribute is telling AttributedServiceFactory
to inject the services specified as parameters.
Valid service names should be provided, as registered in the service manager.
To inject an array value from the service manager, you can use dot notation as below
use Dot\DependencyInjection\Attribute\Inject;
which will inject $container->get('config')['debug'];
.
NOTE
Even if using dot notation,
AttributedServiceFactory
will check first if a service name exists with that name.
Using the AttributedRepositoryFactory
You can register doctrine repositories and inject them using the AttributedRepositoryFactory
as below:
The next step is to add the #[Entity]
attribute in the repository class.
The name
field has to be the fully qualified class name.
Every repository should extend Doctrine\ORM\EntityRepository
.
Dependencies injected via the
#[Entity]
/#[Inject]
attributes are not cachedInjecting dependencies into property setters are not supported
All versions of dot-dependency-injection with dependencies
doctrine/orm Version ^2.9 || ^3.0
psr/container Version ^1.0 || ^2.0