yiisoft/injector
Composer 安装命令:
composer require yiisoft/injector
包简介
PSR-11 compatible injector. Executes a callable and makes an instances by injecting dependencies from a given DI container.
README 文档
README
Yii Injector
A dependency injection implementation based on autowiring and PSR-11 compatible dependency injection containers.
Features
- Injects dependencies when calling functions and creating objects
- Works with any dependency injection container (DIC) that is PSR-11 compatible
- Accepts additional dependencies and arguments passed as array
- Allows passing arguments by parameter name in the array
- Resolves object type dependencies from the container and the passed array by parameter type declaration
- Resolves variadic arguments
i.e.
function (MyClass ...$a)
Requirements
- PHP 7.4 - 8.5.
Installation
The package could be installed with Composer:
composer require yiisoft/injector
About
Injector can automatically resolve and inject dependencies when calling functions and creating objects.
It therefore uses Reflection to analyze the parameters of the function to call, or the constructor of the class to instantiate and then tries to resolve all arguments by several strategies.
The main purpose is to find dependency objects - that is arguments of type object that are declared with a classname or an interface - in a (mandatory) PSR-11 compatible dependency injection container (DIC). The container must therefore use the class or interface name as ID.
In addition, an array with arguments can be passed that will also be scanned for matching dependencies. To make things really flexible (and not limited to objects), arguments in that array can optionally use a function parameter name as key. This way basically any callable can be invoked and any object be instantiated by the Injector even if it uses a mix of object dependencies and arguments of other types.
Basic Example
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 ]);
Caching reflection objects
Enable caching of reflection objects to improve performance by calling withCacheReflections(true):
use Yiisoft\Injector\Injector; $injector = (new Injector($container)) ->withCacheReflections(true);
By default, caching is disabled.
Documentation
- Guide: English, Português - Brasil, Русский
- Internals
If you need help or have a question, the Yii Forum is a good place for that. You may also check out other Yii Community Resources.
License
The Yii Injector is free software. It is released under the terms of the BSD License.
Please see LICENSE for more information.
Maintained by Yii Software.
Support the project
Follow updates
yiisoft/injector 适用场景与选型建议
yiisoft/injector 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3.27M 次下载、GitHub Stars 达 94, 最近一次更新时间为 2019 年 06 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「dependency injection」 「reflection」 「di」 「injector」 「PSR-11」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 yiisoft/injector 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 yiisoft/injector 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 yiisoft/injector 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Library emulating the PHP internal reflection using just the tokenized source code.
Parse use statements for a reflection object
A fast and intuitive dependency injection container.
Generate UML class diagrams by reflection for your PHP projects
Powerful class discovery system for Laravel with attribute-based scanning, directory traversal, and monorepo support
Debug2 is a function developed to debug PHP code of form easy, simple, pretty print, fast and safe.
统计信息
- 总下载量: 3.27M
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 94
- 点击次数: 46
- 依赖项目数: 55
- 推荐数: 1
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2019-06-14