2013-07-23 63 views
2

我有一個數據庫適配器存儲在我的服務管理器中,名爲「dbAdapter」。我正在尋找一種斷開連接的方法,然後使用稍微不同的配置重新連接到此適配器,可能會多次。ZF2重新啓動服務管理器密鑰

原因是我有很多客戶的數據庫結構是100%是一樣的。我正在編寫一個cron作業,它將對每個數據庫進行維護,但它必須連接到第一個數據庫,完成它的工作,放下連接並連接到下一個數據庫......直到它沒有數據庫。

我正在查看源代碼,但我只能在Zend \ ServiceManager \ ServiceManager.php中找到一個名爲unregisterService的受保護方法,看起來它會做我想要的,但它是一種受保護的方法,因此我無法從我的控制器調用它。

是否有可能「終止」服務管理器密鑰並強制其在下次調用時重新創建它?

+2

爲什麼不只是創建幾個DbAdapters? –

+0

@TomekKobyliński實際上,我不喜歡這個主意,因爲它有點冒險,但如果我只是在每次在此上下文中使用新適配器的情況下創建TableGateway的新實例,那就完全沒問題。我會去那,但我仍然不喜歡它。 – shiznatix

回答

4

你可以在ServiceManager設置$allowOverridetrue然後名稱dbAdapter下注冊null值。

$serviceManager->setAllowOverride(true) 
       ->setService('dbAdapter', null) 
       ->setAllowOverride(false);