nayjest / di-hub
PHP 依赖注入库,具有维护链接一致性的机制
v0.1.0
2017-02-07 16:34 UTC
Requires
- php: ^5.5||^7
- container-interop/container-interop: ^1.1
Requires (Dev)
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ~2.3
- symfony/var-dumper: ^3.2
Provides
This package is auto-updated.
Last update: 2024-09-17 23:42:44 UTC
README
具有层次结构和维护链接一致性的机制的 PHP IoC 容器
目录
要求
- 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)中
- 将定义实例的数组注入到 hub 构造函数中
- 通过
$hub->addDefinition(DefinitionInterface $definition)
将定义实例添加到现有的 hub 中 - 通过
$hub->addDefinitions(DefinitionInterface[] $definitions)
将定义实例的数组添加到现有的 hub 中 - 通过 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)。
- 将 nayjest/di-hub 作为独立项目安装
composer create-project nayjest/di-hub -s dev
- 从包文件夹运行测试
cd di-hub composer test
还可以检查代码风格(PSR-2)
composer code-style
贡献
安全性
如果您发现任何与安全相关的问题,请通过电子邮件 [email protected] 而不是使用问题跟踪器。
许可证
© 2016—2017 Vitalii Stepanenko
在 MIT 许可证下许可。
有关更多信息,请参阅许可证文件。