chiron / injector
给它一个美好的描述!
0.2.6
2022-01-15 22:39 UTC
Requires
- php: ^8.0 || ^8.1
- psr/container: ^1.0 || ^2.0
Requires (Dev)
- chiron/devtools: ^1.0
README
基于自动装配和 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
。