kyrill/php-di-container

PHP 依赖注入容器

V1.1.0 2024-01-17 10:59 UTC

This package is auto-updated.

Last update: 2024-09-17 13:05:19 UTC


README

PHP 依赖注入容器

这是一个简单的 PHP 自动依赖注入容器。

基本设置

要安装此包,请在项目的根目录下运行以下命令

composer require kyrill/php-di-container

用法

创建容器

您可以通过实例化 Container 类来创建容器。

<?php
use Kyrill\DIContainer\Container;
$container = new Container();

注册类

使用函数注册类

您可以使用函数注册一个类。首先给类一个唯一的名称,然后在函数中放入类定义:“类定义”,在类定义中给出类的命名空间和参数。之后定义该类是否为单例。如果不希望使用参数,可以留空数组。

<?php
$container->register('name', new ClassDefinition('namespace\\classname/', ['argument1', 'argument2'], true));

通过文件注册类

您可以创建一个具有以下结构的 json 文件来注册类、别名或接口

{
  "services": {
    "namespace\\classname": {
      "arguments": {
        "test": "\\Kyrill\\PhpDiContainer\\TestInterface",
        "foo": "bar"
      }
    },
    "namespace\\alias": {
      "class": "Kyrill\\PhpDiContainer\\Test",
      "arguments": {
        "test": "Kyrill\\PhpDiContainer\\TestInterface",
        "foo": "bar"
      }
    }
  }
}

您可以使用别名来注册类或接口。别名在您想用不同的名称使用类或接口时很有用。对于别名和接口,您必须使用 class 键。arguments 键是可选的。如果您想不使用参数使用类或接口,可以省略。

通过函数注册类

要注册文件,您需要创建一个 FileReader 类。这个类需要实现 FileReaderInterface。您可以通过使用 registerFile 函数来注册文件。默认情况下有一个 JsonFileReader 类。这个类读取 json 文件并注册类或接口。但您也可以创建自己的 FileReader 类。

<?php
$classRegister = new ClassRegistar();
$classRegister->registerFile('.\di.json', new JsonFileReader(), $container);

获取类

您可以使用 resolve 函数来获取类。如果您想获取别名,只需在函数中放入带引号的别名名,例如:'aliasname'。

<?php
$container->resolve(Classname::class);

创建自己的 FileReader

要创建自己的 FileReader 类,您需要实现 FileReaderInterface。这个接口有一个函数 readFile。这个函数需要返回一个包含类、别名或接口的数组。

许可

此项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE.md 文件。