yiisoft / injector
PSR-11 兼容的注入器。执行可调用项并通过从给定的 DI 容器注入依赖项来创建实例。
1.2.0
2023-12-20 09:39 UTC
Requires
- php: ^7.4|^8.0
Requires (Dev)
- maglnet/composer-require-checker: ^3.8|^4.2
- phpbench/phpbench: ^1.1
- phpunit/phpunit: ^9.5
- psr/container: ^1.0|^2.0
- rector/rector: ^0.18.12
- roave/infection-static-analysis-plugin: ^1.16
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.30|^5.7
- yiisoft/test-support: ^1.2
Suggests
- psr/container: For automatic resolving of dependencies
This package is auto-updated.
Last update: 2024-09-07 09:23:44 UTC
README
Yii 注入器
一个基于自动装配和 PSR-11 兼容的依赖注入容器的依赖注入实现。
功能
- 在调用函数和创建对象时注入依赖项
- 与任何 PSR-11 兼容的依赖注入容器(DIC)一起工作
- 接受作为数组传递的附加依赖项和参数
- 允许在数组中以 参数名称 的形式传递参数
- 通过 参数类型声明 从容器和传递的数组中解析对象类型依赖项
- 解析 可变参数,例如
function (MyClass ...$a)
需求
- PHP 7.4 或更高版本。
安装
可以使用 Composer 安装此包。
composer require yiisoft/injector
关于
注入器可以在调用函数和创建对象时自动解析和注入依赖项。
因此,它使用 Reflection 来分析要调用的函数的参数或要实例化的类的构造函数,然后尝试通过几种策略解析所有参数。
主要目的是在一个(强制性的)PSR-11 兼容的 依赖注入容器(DIC)中找到依赖对象——即声明为类名或接口的类型的对象参数。因此,容器必须使用类或接口名称作为 ID。
此外,还可以传递一个参数数组,也将扫描匹配的依赖项。为了使事情更加灵活(而不限于对象),该数组中的参数可以可选地使用函数参数名称作为键。这样,注入器基本上可以调用任何可调用项并创建任何对象,即使它使用对象依赖项和其他类型参数的混合。
基本示例
use Yiisoft\Injector\Injector; // A function to call $fn = function (\App\Foo $a, \App\Bar $b, int $c) { /* ... */ }; // Arbitrary PSR-11 compatible object container $container = new \some\di\Container([ 'App\Foo' => 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 ]);
缓存反射对象
通过调用 withCacheReflections(true)
启用反射对象的缓存以提高性能
use Yiisoft\Injector\Injector; $injector = (new Injector($container)) ->withCacheReflections(true);
默认情况下,缓存是禁用的。
文档
如果您需要帮助或有问题,Yii 论坛 是一个好地方。您还可以查看其他 Yii 社区资源。
许可
Yii 注入器是免费软件。它遵循BSD许可证条款发布。请参阅LICENSE
获取更多信息。
由Yii 软件维护。