amylian/yii2-amylian-di

注意:实验性!YII2 的依赖注入工具

安装: 3

依赖者: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

开放性问题: 0

类型:yii2-extension

dev-master 2019-04-06 09:19 UTC

This package is auto-updated.

Last update: 2024-09-06 22:16:52 UTC


README

最新稳定版本 许可 [构建状态 (master)]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();