mouf/picotainer

此包包含一个真正简约的依赖注入容器,与container-interop兼容。

v1.1.0 2017-03-09 09:19 UTC

This package is auto-updated.

Last update: 2024-09-15 04:31:21 UTC


README

Latest Stable Version Latest Unstable Version License Scrutinizer Code Quality SensioLabsInsight Build Status Coverage Status

此包包含一个真正简约的依赖注入容器(24行代码!)与container-interop兼容(支持ContainerInterface和代理查找功能)。因此,它也与PSR-11,即FIG容器标准兼容。

Picotainer深受Pimple DI容器的影响。可以将其视为具有更少功能、并且与ContainerInterop兼容的Pimple容器。

安装

在项目中使用Picotainer之前,请将其添加到您的composer.json文件中

$ ./composer.phar require mouf/picotainer ~1.0

在容器中存储条目

创建容器只需创建一个Picotainer实例。该Picotainer类接受两个参数

use Mouf\Picotainer\Picotainer;
use Psr\Container\ContainerInterface;

$container = new Picotainer([
	"myInstance"=>function(ContainerInterface $container) {
		return new MyInstance();
	},
	"myOtherInstance"=>function(ContainerInterface $container) {
		return new MyOtherInstance($container->get('myInstance'));
	}
	"myParameter"=>function(ContainerInterface $container) {
		return MY_CONSTANT;
	}
], $rootContainer);

条目列表是一个关联数组。

  • 键是容器中条目的名称
  • 值是一个将返回条目的匿名函数

条目可以是任何东西(对象、标量值、资源等...)

匿名函数必须接受一个参数:将获取依赖关系的容器。如果将其作为构造函数的第二个参数传递,则为“代理查找容器”,如果没有传递代理查找容器,则为Picotainer实例本身。

从容器中获取条目

从容器中获取条目就像调用get方法一样简单

$myInstance = $container->get('myInstance');

为什么需要这个包?

此包是长期努力的一部分,旨在实现DI容器之间的互操作性。最终目标是确保多个容器可以通过共享条目相互通信(一个容器可能使用来自另一个容器的条目等...)