zalevsk1y / container-builder
Container Builder 提供了依赖注入容器的简单实现。它允许轻松管理对象实例及其依赖关系,从而使得代码更加灵活和易于维护。该模块包括添加定义文件、检索实例和调用的方法。
v1.0.5
2024-06-05 15:12 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: ^9.0
README
简介
ContainerBuilder 是一个依赖注入(DI)工具,允许你处理依赖关系并创建具有依赖关系的类的实例。该工具提供了容器接口的实现,提供了一种简单而有效的方式来管理和解析依赖关系。
使用定义文件或 set 方法创建的每个类都将保存到容器中,并通过 get 方法作为单例实例返回。这意味着对同一类的后续调用将返回之前创建的实例。
新功能:手动对象添加
现在,您可以使用 set 方法手动将对象添加到 DI 容器中。这允许您设置类的特定实例,从而对容器中存储的对象有更多的控制。
use ContainerBuilder\DI;
$container = new DI();
$container->addDefinitions(__DIR__ . '/config.php');
$instance = $container->set(new ClassName($some_deps));
$instance = $container->get(ClassName::class);
API
ContainerBuilder 的 API 简单直观,允许您
- 使用 addDefinitions 方法添加定义
- 使用 get 方法获取类的实例
- 使用 call 方法调用实例的方法
- 使用 set 方法设置类的特定实例
配置文件格式
配置文件是一个定义数组,其中每个键代表一个类,其值是一个依赖关系数组。配置文件的格式如下
return array(
ClassName1::class=>[Dependency1, Dependency2, ...],
ClassName2::class=>[Dependency3, Dependency4, ...],
...
)
在这里,ClassName1 和 ClassName2 是具有依赖项 Dependency1、Dependency2、Dependency3 和 Dependency4 的类。
示例
以下是如何使用 ContainerBuilder 的示例
use ContainerBuilder\DI;
$container = new DI();
$container->addDefinitions(__DIR__ . '/config.php');
$instance = $container->get(ClassName::class);
$result = $container->call([$instance, 'methodName'], [$arg1, $arg2, ...]);
在这个例子中,config.php 是包含类定义及其依赖关系的配置文件。使用 addDefinitions 方法加载定义,使用 get 方法获取 ClassName 类的实例。使用 call 方法调用 ClassName 实例的 methodName 方法,并传递参数 $arg1、$arg2 等。
感谢 🙏 对我们的支持 - Atlant Web Agency。