nayjest/di-hub

PHP 依赖注入库,具有维护链接一致性的机制

v0.1.0 2017-02-07 16:34 UTC

This package is auto-updated.

Last update: 2024-09-17 23:42:44 UTC


README

具有层次结构和维护链接一致性的机制的 PHP IoC 容器

Build Status

SensioLabsInsight

目录

要求

  • PHP 5.5+ (HHVM & PHP7 支持)

安装

推荐通过 Composer 安装此包。

从您的项目文件夹运行以下命令

composer require nayjest/di-hub

用法

创建 hub

Nayjest\DI\Hub 类表示 IoC 容器。该类实现了来自 container-interop/container-interop 包的 ContainerInterface。

Hub 可以不带参数或带包含定义的数组来实例化。

use Nayjest\DI\Hub;
# Empty hub
$hub = new Hub;

# Hub with definitions

$hub = new Hub([
  new Value('item1', $item1),
  new Value('item2', $item2),
  new Relation('item1', 'item2', $handler),
]);

定义

可以将多种类型的定义添加到 hub 中

  • 关系

定义应该实现 Nayjest\DI\Definition\DefinitionInterface。该接口不包含任何方法,它仅用于表示目标类的实例定义了容器内的数据或关系。

可以通过以下方式将定义添加到容器(hub)中

  1. 将定义实例的数组注入到 hub 构造函数中
  2. 通过 $hub->addDefinition(DefinitionInterface $definition) 将定义实例添加到现有的 hub 中
  3. 通过 $hub->addDefinitions(DefinitionInterface[] $definitions) 将定义实例的数组添加到现有的 hub 中
  4. 通过 DefinitionBuilder 创建定义:$hub->builder()->define($id $source)

值定义

Nayjest\DI\Definition\Value 的实例表示容器中的单个值,可以通过其 ID 访问。Nayjest\DI\Definition\Value 接受两个参数:ID 和源。源可以包含存储在 hub 中的值或返回目标值的可调用对象。

# Add data directly to definition
$hub->addDefinition(new Value('item1', $data));

# Add data via callable
$hub->addDefinition(new Value('item2', function(){
   return $data;
}));

关系定义

@todo

项定义

项是值及其初始依赖项的组合。可能有助于存储在构造函数中需要 DI 的类实例。

@todo

hub 的层次结构

@todo

测试

此包包含单元测试(PHPUnit)。

  1. 将 nayjest/di-hub 作为独立项目安装
composer create-project nayjest/di-hub -s dev
  1. 从包文件夹运行测试
cd di-hub
composer test

还可以检查代码风格(PSR-2)

composer code-style

贡献

有关详细信息,请参阅贡献指南行为准则

安全性

如果您发现任何与安全相关的问题,请通过电子邮件 [email protected] 而不是使用问题跟踪器。

许可证

© 2016—2017 Vitalii Stepanenko

在 MIT 许可证下许可。

有关更多信息,请参阅许可证文件