amylian / yii2-amylian-di
注意:实验性!YII2 的依赖注入工具
dev-master
2019-04-06 09:19 UTC
Requires
- php: ^7.1
- yiisoft/yii2: ^2.0.13@stable
Requires (Dev)
- phpunit/phpunit: <8@stable
- yiisoft/yii2-dev: ^2.0.13@stable
Suggests
- php: >=7.0
- yiisoft/yii2-dev: *@stable
This package is auto-updated.
Last update: 2024-09-06 22:16:52 UTC
README
[
]https://travis-ci.org/amylian/yii2-amylian-di.svg?branch=master
Yii2 扩展依赖注入容器
特性
提供对 Yii2 框架的依赖注入容器的扩展实现
以下特性添加到标准实现中
- 命名参数: 构造函数参数不需要按顺序或索引位置指定,但可以可选地使用构造函数参数名称。
- 设置调用: 可以使用
methodName()
格式在配置数组中指定设置调用。值可以是引用(实例或 ReferenceInterface),但必须指定为数组。 - ReferenceInterface: 除了标准的 Instance 对象外,还定义了一个
ReferenceInterface
,它在对象创建时解决。该组件已经包含各种ReferenceInterface
的实现。InstanceArray
:可以用来定义引用数组(Instance
-对象或实现ReferenceInterface
的对象,在需要时由容器自动解决。注意:数组可能包含其他值。如果项目不是引用(例如,其他类型的对象、字符串等),则项目保持不变。别名:
可以用来定义包含别名的路径,例如"@runtime/data/path"
。此类引用可以在使用路径的配置数组中使用,但如果定义的对象不支持 Yii-Aliases(例如,第三方,非特定于 yii 的类),则可以使用\Amylian\Yii\DI\Alias:of('@app/my/path')
,它与\Yii:getPath('@app/my/path')
做同样的事情,但后者不能用于配置,因为在加载配置时别名是未知的。
安装
安装此扩展的最佳方式是通过 composer。
运行
php composer.phar require --prefer-dist amylian/yii2-amylian-di "*"
或添加
"amylian/yii2-amylian-di": "*"
到您的 composer.json
文件的 require 部分中。
用法
将扩展容器类用作 Yii2 中的标准容器
Yii2 会自动创建全局容器。将 \Amylian\Yii\DI\Container
的实例替换为它的最简单方法是添加
\Yii::$container = new Amylian\Yii\DI\Container();
在加载 Yii.php 之后
require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php'; \Yii::$container = new Amylian\Yii\DI\Container(); // <--- Create New Container! (new yii\web\Application($config))->run();