2009-12-29 26 views
1

我即將開始編寫我的第一個大型CodeIgniter應用程序,但在開始之前,我想知道庫的角色應該是什麼。我是MVC的新手,但從我收集的模型應該是數據結構存儲的地方(業務邏輯)。除了控制器之外,庫是否還可以編寫應用程序邏輯?在圖書館中結合模型是一個好主意嗎?在CodeIgniter中設計庫

例如,我將編寫一個會員管理系統,該系統將具有配置文件和消息。 MVC + L(庫)設置應該是什麼樣子? 2個模型(配置文件,消息)和一個結合它們的庫?每個對象的庫?沒有庫,只有模型和控制器?

回答

6

CodeIgniter中的庫僅僅是PHP類。任何時候你通常會寫一個PHP類,在CodeIgniter中你會寫一個'Library'。

大部分情況下,數據處理這種數據庫調用或海量數據操作應該放在模型中。很明顯,帶有少量PHP的HTML會進入視圖,用戶交互屬於控制器。

你可能會想要一個認證庫,這將是一個PHP類。但是,有幾種可用的開源庫,例如Tank Auth和DX Auth,您可以查看這些庫。經驗法則:傳統的PHP庫通常是一堆相關的函數,比如日期函數,但是在CodeIgniter中會是一個幫手。傳統的PHP類/對象將是一個CodeIgnter庫。

不要害怕看在system/helperssystem/libraries文件夾中的源代碼

+0

使用應用程序/不是系統/ - 這是一箇舊的迴應。 – sitesbyjoe 2017-06-19 20:20:43

0

我建議只是模型和控制器。我認爲庫是用於可以重用的邏輯,而不是特定於應用程序的。而且我認爲如果控制器和模型可以完成這項工作,那就去找他們吧。

+1

一個庫可以包含任何東西的邏輯功能,而不僅僅是特定於應用程序的東西。 – 2009-12-29 09:45:34

0

業務邏輯應該在控制器只與數據庫交互應該在模型中。

我的問題我問自己在哪裏放東西很簡單。我看看我的模型中的「ifs」。那些是否在檢查數據?如果他們正在檢查與數據庫的交互是否成功,則代碼就是它所屬的位置。如果它檢查返回的數據值,則可能是錯誤的(並且應該放在控制器中)。

正如Zack所說,帶小php代碼的HTML應該放在視圖中。

圖書館更支持類。例如,我爲過去的特殊日曆製作了一個圖書館(班級)。

如果你甚至不需要一個類,把它放進一個幫手。 (例如因爲你只有一個特定的字符串操作函數,但想在不同的地方使用它)

0

我同意Dennis Decoene所說的。但經過一番思考之後,爲什麼auth庫開發人員在他們的auth應用程序中創建了混合的庫和助手,其中他們的庫與php類的性質相比做了更「無關」的過程。