mouf / picotainer
此包包含一个真正简约的依赖注入容器,与container-interop兼容。
v1.1.0
2017-03-09 09:19 UTC
Requires
- container-interop/container-interop: ~1.2
- psr/container: ^1.0
Requires (Dev)
- phpunit/phpunit: ~4.8
- satooshi/php-coveralls: ~1.0
README
此包包含一个真正简约的依赖注入容器(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容器之间的互操作性。最终目标是确保多个容器可以通过共享条目相互通信(一个容器可能使用来自另一个容器的条目等...)