1 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
循環(huán)依賴無(wú)法使用 setter 來(lái)解決,除非您使用Lazy Loading。問(wèn)題是它需要一個(gè)代理庫(kù),它有 3 個(gè)額外的依賴項(xiàng),這對(duì)于我的簡(jiǎn)單用例來(lái)說(shuō)有點(diǎn)過(guò)大了。(PHP-DI 的文檔中似乎還缺少一個(gè)步驟)
傳輸框架/發(fā)送事件管理器 (3.2.1)
zendframework/zend 代碼 (3.4.1)
ocramius/代理管理器 (2.2.3)
ocramius/包版本 (1.5.1)
為了解決這個(gè)問(wèn)題,我手動(dòng)完成了 PHP-DI 的工作。
一旦容器構(gòu)建完成,我在 Logger 上設(shè)置了一個(gè) setter 來(lái)設(shè)置 SlackService,并且我沒(méi)有在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 關(guān)注
- 113 瀏覽
添加回答
舉報(bào)