1 回答
TA贡献1799条经验 获得超6个赞
循环依赖无法使用 setter 来解决,除非您使用Lazy Loading。问题是它需要一个代理库,它有 3 个额外的依赖项,这对于我的简单用例来说有点过大了。(PHP-DI 的文档中似乎还缺少一个步骤)
传输框架/发送事件管理器 (3.2.1)
zendframework/zend 代码 (3.4.1)
ocramius/代理管理器 (2.2.3)
ocramius/包版本 (1.5.1)
为了解决这个问题,我手动完成了 PHP-DI 的工作。
一旦容器构建完成,我在 Logger 上设置了一个 setter 来设置 SlackService,并且我没有在setter 方法上方的注释中添加 @Inject。
// Set up dependencies
$dependencies = require __DIR__ . '/../../src/dependencies.php';
$dependencies($containerBuilder);
// Build PHP-DI Container instance
$container = $containerBuilder->build();
$loggerInterface = $container->get(LoggerInterface::class);
$loggerInterface->setSlackService ($container->get(SlackService::class);
// Instantiate the app
AppFactory::setContainer($container);
$app = AppFactory::create();
- 1 回答
- 0 关注
- 82 浏览
添加回答
举报