technically/依赖解析器

基于PSR-11容器的依赖解析器实用工具,用于自动装配。

0.7.0 2021-04-21 14:56 UTC

This package is auto-updated.

Last update: 2024-08-28 00:17:36 UTC


README

Technically\DependencyResolver 是一个简单但强大的工具,可以通过从PSR-11容器解析或递归使用DependencyResolver本身来实例化类及其依赖项来自动装配。

Status

特性

  • 基于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 文件中。

致谢