dariorieke / dependency-injection
此软件包最新版本(dev-master)没有提供许可证信息。
实现PSR-11接口的依赖注入容器
dev-master
2022-02-03 16:54 UTC
This package is auto-updated.
Last update: 2024-08-29 05:24:56 UTC
README
实现PSR-11容器接口的依赖注入容器
安装
使用composer安装
"require": {
"dariorieke/dependency-injection": "dev-master"
}
运行测试
使用以下命令运行测试
./vendor/bin/phpunit .\tests
用法
注册依赖项
依赖项通过返回依赖项的函数进行注册,这些函数可以是任何接收容器作为参数的callable
,这允许您在创建时将依赖项注入到其他依赖项中。正常依赖项总是返回类的新的实例,与单例相比。
use DarioRieke\DependencyInjection\DependencyInjectionContainer;
$container = new DependencyInjectionContainer();
//register a queue
$container->register('queue', function ($container) {
return new SplQueue();
});
注册单例
要注册一个单例,其中容器总是返回依赖项的相同实例(在本例中为Logger
),
use DarioRieke\DependencyInjection\DependencyInjectionContainer;
$container = new DependencyInjectionContainer();
$container->singleton('logger', function ($container) {
return new Logger();
});
检索依赖项
从容器中检索依赖项很简单。使用has
和get
方法来检索单例和正常依赖项
if($container->has('logger')) {
$logger = $container->get('logger');
}
注册和检索参数
您还可以注册和检索参数,例如配置值
$container->setParameter('debug', true);
if($container->hasParameter('debug')) {
$debugMode = $container->getParameter('debug');
}
向依赖项添加方法调用
您可能想要注册一个依赖项并使用setter方法注入另一个依赖项。这可以在注册函数内部完成,但您也可以更灵活地完成。addMethodCall
接收方法调用参数的数组
$container->addMethodCall('myDependency', 'setLogger', [ $container->get('logger') ]);
依赖项别名
您可以使用别名名称注册依赖项,例如接口名称,并通过其别名检索它。
$container->alias('logger', LoggerInterface::class);