zalevsk1y/container-builder

Container Builder 提供了依赖注入容器的简单实现。它允许轻松管理对象实例及其依赖关系,从而使得代码更加灵活和易于维护。该模块包括添加定义文件、检索实例和调用的方法。

v1.0.5 2024-06-05 15:12 UTC

This package is auto-updated.

Last update: 2024-09-05 15:44:21 UTC


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