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 關注
- 117 瀏覽
添加回答
舉報