# Luma | Dependency Injection Component
Version 1.3.0 PHP Coverage 96.36% License GPL--3.0--or--later
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).