2010-01-14 68 views
1

我剛剛在PHP中使用類,我剛剛意識到,在我的大多數類方法中,我需要做一些mysql查詢。我有另一個類來處理我的連接和查詢,但我應該如何去從其他類調用該類?如果我的所有類都依賴於我的數據庫類,那麼這種類型是否會破壞使用類的目的?如何在其他類中運行數據庫類方法?

+0

一些示例代碼,將有助於說明你想要做什麼。 – Chris 2010-01-14 04:52:44

回答

1

這通常與辛格爾頓或者工廠模式解決了......

當你需要使用數據庫,你搶奪應用程序的數據庫對象:

$db = Site::getDb(); // singleton 
$db->exec('update t set i = i + 1'); 

getDb返回一個靜態實例。

或:

$db = Db::getDb('dsn'); // factory 
$db->exec('update t set i = i + 1'); 

如果它存在,或者爲該DSN新的DB手柄返回一個靜態實例...

+0

+1,尼斯的答案,但你不是指'Db :: getDb()'而不是'Site :: getDb()'? – 2010-01-14 04:54:26

+0

對不起,我仍然在學習這個東西,據我所知,一個單身人士是用於連接部分,如果連接已被調用/製作,那麼它使用該連接,否則它創建一個新的權利?所以我的主要問題是基於我到目前爲止,我有一個會話類爲我設置和獲取會話變量,而不是使用PHP的默認設置和獲取會話功能,我將它們包裝在一個類中,以便我可以更改在路上使用任何類型的緩存系統。我也有一個數據庫類,它將建立連接並具有查詢的方法。我 – JasonDavis 2010-01-14 18:52:31

+0

看到它的方式是我需要訪問所有其他類中的數據庫和會話類,我只是想知道這是否正常?比方說,我決定建立一個不同的網站,如果我嘗試使用「論壇」類,它將無法正常工作,除非我也帶上我的數據庫和會話類。我認爲這是好的,但我是一個總是新手與類和類似的 – JasonDavis 2010-01-14 18:54:26

相關問題