technically / 依赖解析器
基于PSR-11容器的依赖解析器实用工具,用于自动装配。
0.7.0
2021-04-21 14:56 UTC
Requires
- php: >=7.1
- psr/container: ^1.0
- technically/callable-reflection: ^0.4.0
- technically/null-container: ^1.0
Requires (Dev)
- peridot-php/peridot: ^1.19
- technically/array-container: ^1.0
README
Technically\DependencyResolver
是一个简单但强大的工具,可以通过从PSR-11容器解析或递归使用DependencyResolver本身来实例化类及其依赖项来自动装配。
特性
- 基于PSR-11
- PHP 8.0兼容(支持联合类型提示;见以下示例)
- PHP 7.1+ 兼容
- 递归依赖自动装配
- 语义版本
- 测试
安装
使用 Composer 包管理器将 Technically\DependencyResolver 添加到您的项目中
composer require technically/dependency-resolver
示例
<?php final class MyFancyService { public function __construct(callable|LoggerInterface $log) { // initialize } } // Construct service instance, providing dependencies in-place: $resolver = new DependencyResolver(); $service = $resolver->construct(MyFancyService::class, [ 'log' => function (string $priority, string $message) { error_log("[$priority]: $message"); }] ); // Resolve service instance from container, falling back to `construct()` otherwise. $resolver = new DependencyResolver($container); $service = $resolver->resolve(MyFancyService::class);
变更日志
本项目所有显著的变更都将记录在 CHANGELOG 文件中。
致谢
- 由 👾 Ivan Voskoboinyk 实现
- 深受Dawid Kraczkowski在 igniphp/container 中的工作启发