2011-09-22 85 views
1

我正在創建一個新的PHP應用程序,並且希望確保我的基礎工作正確保存任何未來問題。我知道我的應用程序將有不止一個類需要一個數據庫連接(PDO),並且經過很長一段時間瀏覽互聯網後,我找不到明確的解決方案。全局可用的數據庫連接,而不使用全局/單例

我喜歡Singleton設計模式個人,但也有很多人在那裏,說,在一般的單身人士應不惜一切代價避免。但是,這些人並沒有針對這個問題給出具體的解決方案。我知道一個應用程序可能需要多個數據庫連接,但是我不能創建包含每個必需數據庫連接的單例(即DB :: getInst('conn1') - > query();)?

它是具有傳遞輪PDO(或PDO包裝器)對象的每一個可能需要它的類的情況下?我之前做過這件事,然後發現它煩人地追蹤它。

+0

看看:[Symfony的依賴注入(http://components.symfony-project.org/dependency-injection/)或依賴注入一般。也許它會給你一個新的視角。 – Yoshi

回答

0

我個人的事一單(或一個多例,如果你需要幾個數據庫連接)是罰款,這樣的用法。

但是,如果你不想使用它,你應該看看註冊表模式。

這種方式,你可以有你的數據庫類的實例(S)適用於所有應用程序的類,而不必每次(這是非常醜陋的,恕我直言)傳遞一個額外的參數。

+0

謝謝,我認爲多倍會很好,但我想它歸結爲個人偏好 – buffcoredave

0

但我可以不創建一個包含每個必需的數據庫連接(即DB :: getInst('conn1') - >查詢();)的單例嗎?

就可以了,這就是所謂的multiton模式