2010-07-22 34 views
2

即時通訊使用php,mysql創建一個web應用程序。即時計劃寫在課堂上。php sql和類

我已經在3類:CBaseUser,CWaiter,CBaseAuth

所以基本上CBaseUser將是父類CWaiter和CBaseAuth包含像GetPasswdLen東西(),CreatePasswd(),爲gettoken()。

所以現在這裏即時通訊的標題做計劃,requre插入,刪除,更新,登陸的其餘部分,等

IM有點迷惑,因爲林不知道我應該在哪裏做我的SQL查詢功能。我應該在CWaiter中做到嗎?

有人能告訴我有關PHP中的OOP嗎?就像創建PHP Web程序的最佳實踐一樣。

回答

3

如果你正在做所有的OO,你可能想在深入研究sql事務之前看看php's pear db。 pear :: db使數據庫無關係統成爲可能,這意味着你可以在不改變一行代碼的情況下在mysql,postgre等上運行它。

+0

太棒了!我現在看着它 – nuttynibbles 2010-07-22 03:59:18

0

即時通訊有點混淆,因爲我不知道我應該在哪裏做我的SQL查詢功能。我應該在CWaiter中做到嗎?

可以,但通常認爲將SQL查詢保留在業務邏輯的單獨位置(即單獨的源代碼文件集)是一種很好的做法。 「MVC」是人們經常談論的一種模式,它涉及將「模型」(即需要了解您的數據庫結構的任何東西,例如您的所有SQL)的代碼分開「查看」(繪製UI的任何內容,通常意味着模板引擎)和「控制器」(所有業務邏輯,將它們一起繪製)。

這意味着你需要一組不同類的名稱,例如CBaseUserDB或CWaiterDB(或其他),以便任何需要更新/查詢數據庫的類。這是一個簡單的例子來說明我的觀點。

分離這種背後的思想是,SQL,模板代碼和業務邏輯都交織在一起可能是混亂的或難以遵循的。

您可能還想看看PDO,這是一種更現代的訪問數據庫的方式,比如mysql_和mysqli_。它包含一些額外的功能,例如準備好的語句,但我認爲主要的好處是它意味着您的知識將會更具前景,並且您將能夠輕鬆適應不同的數據庫API。與之前的答案不同,我不太喜歡像pear :: db這樣的高級抽象,但這取決於你的個人意見。

1

有關類似問題請參閱here。你真的想避免重複結構類似的查詢,但是很少有程序員知道如何在「綠地」項目中這樣做。