chiron/injector

给它一个美好的描述!

维护者

详细信息

github.com/ncou/injector

源代码

问题

资助包维护!
ncou

0.2.6 2022-01-15 22:39 UTC

This package is auto-updated.

Last update: 2024-09-20 17:24:35 UTC


README

Build Status Static Analysis

CodeCov

Latest Stable Version Total Downloads Monthly Downloads Total Downloads

Latest Version Total Downloads

基于自动装配和 PSR-11 兼容的依赖注入容器的依赖注入实现。

特性

  • 在调用函数和创建对象时注入依赖项
  • 与任何 PSR-11 兼容的依赖注入容器 (DIC) 一起工作
  • 接受作为数组传递的额外依赖项和参数
  • 允许通过数组的参数名称传递参数
  • 通过参数类型声明从容器和传递的数组中解决对象类型依赖
  • 解决可变参数,即 function (MyClass ...$a)

要求

  • PHP 7.4 或更高版本。

安装

可以使用 composer 安装此包。

composer require chiron/injector

关于

注入器可以自动在调用函数和创建对象时解决和注入依赖项。

因此,它使用 Reflection 分析要调用的函数的参数,或要实例化的类的构造函数,然后尝试通过几种策略解决所有参数。

主要目的是在 (强制性) PSR-11 兼容的 依赖注入容器 (DIC) 中找到依赖对象 - 即声明为类名或接口的类型的对象参数。因此,容器必须使用类名或接口名作为 ID。

此外,还可以传递一个参数数组,它也将被扫描以匹配依赖项。为了使事情更加灵活(并且不仅仅限于对象),该数组中的参数可以使用函数参数名称作为键。这样,基本上任何可调用函数都可以被调用,任何对象都可以由注入器实例化,即使它使用对象依赖项和其它类型参数的混合。

基本示例

// A function to call
$fn = function (Foo $a, Bar $b, int $c) { /* ... */ };

// Arbitrary PSR-11 compatible object container
$container = new \some\di\Container([
    Foo::class => new Foo(), // will be used as $a
]);

// Prepare the injector
$injector = new Injector($container);

// Use the injector to call the function and resolve dependencies
$result = $injector->invoke($fn, [
    'c' => 15,  // will be used as $c
    new Bar(),  // will be used as $b
]);

文档

文档可以在 这里 找到。

测试

单元测试

该包使用 PHPUnit 进行测试。要运行测试

composer phpunit

静态分析

代码使用 Phpstan 进行静态分析。要运行静态分析

composer phpstan

编码规范

代码应遵循 Chiron Coding Standard。要应用编码规范

# detect violations of the defined coding standard.
composer check-style
# automatically correct coding standard violations.
composer fix-style

许可证

Chiron Injector 是自由软件。它根据 MIT 许可证的条款发布。有关更多信息,请参阅 LICENSE