89 lines
2.8 KiB
Markdown
89 lines
2.8 KiB
Markdown
|
# Luma | Dependency Injection Component
|
||
|
|
||
|
<div>
|
||
|
<!-- Version Badge -->
|
||
|
<img src="https://img.shields.io/badge/Version-1.3.0-blue" alt="Version 1.3.0">
|
||
|
<!-- PHP Coverage Badge -->
|
||
|
<img src="https://img.shields.io/badge/PHP Coverage-96.36%25-green" alt="PHP Coverage 96.36%">
|
||
|
<!-- License Badge -->
|
||
|
<img src="https://img.shields.io/badge/License-GPL--3.0--or--later-34ad9b" alt="License GPL--3.0--or--later">
|
||
|
</div>
|
||
|
|
||
|
A PHP package for managing dependencies and dependency injection.
|
||
|
|
||
|
---
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
You can install this package via [Composer](https://getcomposer.org/):
|
||
|
|
||
|
```bash
|
||
|
composer require lumax/dependency-injection-component
|
||
|
```
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
### DependencyContainer
|
||
|
|
||
|
The `DependencyContainer` class provides a simple way to manage and retrieve dependencies. You can add and retrieve
|
||
|
dependencies as follows:
|
||
|
|
||
|
```php
|
||
|
use Loom\DependencyInjectionComponent\DependencyContainer;
|
||
|
|
||
|
// Create a container
|
||
|
$container = new DependencyContainer();
|
||
|
|
||
|
// Add a dependency
|
||
|
$container->add(MyDependency::class, new MyDependency());
|
||
|
|
||
|
// Retrieve a dependency
|
||
|
$dependency = $container->get(MyDependency::class);
|
||
|
```
|
||
|
|
||
|
### DependencyManager
|
||
|
|
||
|
The `DependencyManager` class allows you to load dependencies from a YAML configuration file and register them in a
|
||
|
`DependencyContainer`. Here's an example of how to use it:
|
||
|
|
||
|
```php
|
||
|
use Loom\DependencyInjectionComponent\DependencyContainer;
|
||
|
use Loom\DependencyInjectionComponent\DependencyManager;
|
||
|
|
||
|
// Create a container
|
||
|
$container = new DependencyContainer();
|
||
|
|
||
|
// Create a manager and load dependencies from a YAML file
|
||
|
$manager = new DependencyManager($container);
|
||
|
$manager->loadDependenciesFromFile('path/to/dependencies.yaml');
|
||
|
```
|
||
|
|
||
|
In your YAML configuration file (`dependencies.yaml`), you can define services and their arguments for injection.
|
||
|
|
||
|
### Setting Up Your Services/Dependencies Definitions
|
||
|
|
||
|
Here's an example of a `dependencies.yaml` file that demonstrates how to define services and their arguments for injection:
|
||
|
|
||
|
```yaml
|
||
|
services:
|
||
|
myService:
|
||
|
class: 'Namespace\MyService'
|
||
|
arguments:
|
||
|
- 'argument1'
|
||
|
- 'argument2'
|
||
|
- '@anotherService' # Inject another service
|
||
|
```
|
||
|
|
||
|
Here's a breakdown of the elements in the dependencies.yaml file:
|
||
|
|
||
|
- `services`: This section defines the services and their configurations.
|
||
|
- `alias`: Your chosen alias for the service - `myService`.
|
||
|
- `class`: The fully qualified class name of the service class.
|
||
|
- `arguments`: An array of constructor arguments. Use "@" to reference other services.
|
||
|
|
||
|
Once you've set up your `dependencies.yaml` file with the desired services and configurations, you can load and manage
|
||
|
these dependencies using the Dependency Injection Package.
|
||
|
|
||
|
## License
|
||
|
|
||
|
This package is open-source software licensed under the [GNU General Public License, version 3.0 (GPL-3.0)](https://opensource.org/licenses/GPL-3.0).
|