kodcube/dependency-injection

此包最新版本(0.1.2)没有可用的许可信息。

依赖注入容器

0.1.2 2016-07-19 09:48 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:47:45 UTC


README

此包是递归依赖注入容器(DiC)/服务定位器/对象构建器

它被设计为将其依赖配置映射作为其构建的一部分,因此而不是在运行时设置所有依赖项,它们可以从配置文件或文件中加载。

因此,只要你能创建一个数组,配置就会在构建时注入。

主要功能

  • 根据类名或别名构建服务/对象/类
  • 构建需要其他依赖项的类/对象
  • 缓存构建的服务/对象/类,以便在其他类(例如数据库连接)中重复使用
  • 结合传递和必需依赖项构建对象/类
  • 递归对象创建

限制

  • 不向除了 __constructor 之外的任何方法注入依赖项
  • 不向设置器注入依赖项

需求

配置示例

使用方法

创建容器

$di = new KodCube\DependencyInjection\Container();

or

$di = new KodCube\DependencyInjection\Container($config);

or

$di = new KodCube\DependencyInjection\Container([
  'MyAlias' => 'Vendor\Package\Class',
  'Vendor\Package\Interface' => 'Vendor\Package\Class'
])

使用别名从容器获取对象

使用别名

$object = $di->get('MyAlias');

or 

$object = $di('MyAlias');

or
 
$object = $di->MyAlias(); 

使用类名

$object = $di->get('Vendor\Package\Class');

or 

$object = $di('Vendor\Package\Class');

使用接口名称(需要依赖映射)

$object = $di->get('Vendor\Package\Interface');

or 

$object = $di('Vendor\Package\Interface');

检查别名\类是否存在于容器中

Alias
$object = $di->has('MyAlias');

Class
$object = $di->has('Vendor\Package\Class');

创建对象

使用 DiC 并传递参数创建对象。

这还将利用容器的自动装配属性。

注意:带有附加参数创建的对象不会被容器缓存。

$object = $di->make('Vendor\Package\Class','argument1','argument2');