2009-07-17 17 views
1

我有一個數據庫類,它的構造使得它在第一個查詢運行時打開到數據庫的連接。應該爲每個用於該網站的用戶,組等的其他類別創建一個數據庫對象嗎?這使得這些類很容易在別處部署;他們只會依賴於數據庫類。然而,這將需要我把證書放在每個班級。另一種對我來說不那麼麻煩的方法是創建一個數據庫對象並將它保存在一個全局變量中。這可以減少活動的數據庫連接,因爲它更易於配置;憑證只需設置一次。每個班級或整個網站的數據庫對象?

某處我聽說應該避免使用全局變量。最佳實踐方法是什麼?

+0

退房梨如果你還沒有...可能會節省你一些時間http://pear.php.net/package/DB – 2009-07-17 13:28:23

回答

1

你可以讓你的其他類需要一個數據庫連接對象在其構造。這樣他們不必知道憑證。

另一種常見的方式是使用單身進行數據庫連接。儘管基本上這仍然是一個全局變量,但它的確意味着你可以在一個地方控制數據庫對象的實例化。

0

我會做一個基類,只包含連接管理的東西,沒有任何表特定的。然後你可以把憑據放在那裏。

另一個選擇是在這樣的基類上使用一個靜態變量來存儲憑據(而不是將它們硬編碼到一個很髒的函數中)。

所以BaseDBConnection::$usernameBaseDBConnection::$password將包含憑據,和您的其他DBConnection的類從BaseDBConnection派生並指self::$username

0

您應該避免全局數據庫對象。您的數據庫應儘可能早地打開並儘快關閉。

您應該在每個類的內部使用一個數據庫對象,並且只有在需要時才應該打開/關閉數據庫對象。

0

我會創建一個'配置'文件,基本上只是將憑據存儲爲變量並將其包含在所需的Class文件中。

這樣,任何憑據更改只需要更改'配置'文件。

編輯:

我忘了提,這意味着你的數據庫類的新實例,應該在每一個類實例化。

相關問題