CodeIgniter4 模型,視圖和控制器

2020-08-17 14:17 更新

當(dāng)創(chuàng)建一個(gè)應(yīng)用的時(shí)候,我們需要找到一種組織代碼的方法,使其易于找到正確的文件并且易于維護(hù)。和很多 Web 框架類似, CodeIgnite 框架也使用了模型、視圖、控制器結(jié)構(gòu),即 MVC 模式,來組織接著代碼文件。這種方式可以將數(shù)據(jù),展示部分和流程部分分別作為單獨(dú)的部分存放在我們的應(yīng)用中。需要注意的是,對于每一個(gè)元素的所擔(dān)任的角色會有很多種看法,本文描述了我們對此的看法。如果你有不同的看法,則可以根據(jù)需要隨意修改使用方式。

模型 主要用來管理應(yīng)用的數(shù)據(jù), 根據(jù)應(yīng)用的特殊業(yè)務(wù)規(guī)則獲取數(shù)據(jù)。

視圖 是一個(gè)沒有或者少量邏輯的簡單的文件, 它只負(fù)責(zé)將數(shù)據(jù)展示給用戶。

控制器 主要承擔(dān)了膠水代碼的功能, 它主要在視圖層和數(shù)據(jù)存儲之間來回的處理并整合數(shù)據(jù)。

在最簡單的情況下,控制器和模型只是一個(gè)完成特定工作的類。他們雖然不是你可以使用的唯一類的類型,但他們是構(gòu)成整個(gè)框架的核心。你也可以將控制器和模型文件存儲在任何你需要的位置,但是 CodeIgnite 框架在 /app 目錄中為我們指定了存儲目錄。我們將在之后進(jìn)行詳細(xì)討論。

下面我們就來看一下這三個(gè)主要組成部分。

組成

視圖

視圖是最簡單的文件,一個(gè)視圖文件通常是一個(gè)HTML文件加入少量的PHP代碼。視圖中的PHP代碼應(yīng)該盡可能的簡單,一般只是顯示一個(gè)變量內(nèi)容,或者通過循環(huán)語句將數(shù)據(jù)輸出在表格中展示出來。

視圖從控制器中獲取數(shù)據(jù)并展示——控制器將數(shù)據(jù)發(fā)送給視圖,視圖通過簡單的 echo 調(diào)用將數(shù)據(jù)展示出來。你也可以在一個(gè)視圖中插入展示其他視圖,這樣可以很簡單的在每個(gè)頁面上展示出公共的頁眉和頁腳。

視圖文件通常存放在 /app/Views 目錄下,如果在創(chuàng)建文件時(shí)不按照一定的規(guī)則創(chuàng)建的話,會顯得我們的代碼雜亂無章。 CodeIgnite 框架雖然沒有規(guī)定任何的規(guī)則,但通過經(jīng)驗(yàn)我們規(guī)定在 Views 目錄下創(chuàng)建一個(gè)新的目錄對應(yīng)每個(gè)控制器。然后通過方法名來命名視圖。這樣就會使我們之后查找起來更加容易。例如:用戶配置 可能會顯示在一個(gè)名為 User 的控制器中,并且方法名稱為 profile ,你就可以將該視圖文件保存在 /app/Views/User/Profile.php 這個(gè)路徑下,并這樣命名。

這種良好的組織代碼方式建議養(yǎng)成一個(gè)習(xí)慣??赡苡行r(shí)候,你有一些其他需求需要以其他方式來組織代碼,沒關(guān)系,只要CodeIgnite框架可以找到這個(gè)文件,這個(gè)視圖就會被顯示。

點(diǎn)擊這里閱讀更多關(guān)于視圖的相關(guān)內(nèi)容

模型

對于許多開發(fā)人員而言,在確定執(zhí)行哪些業(yè)務(wù)規(guī)則時(shí)會困惑。模型的主要任務(wù)是給應(yīng)用維護(hù)單一類型的數(shù)據(jù)。比如:用戶,博客內(nèi)容,交易信息等。所以,模型的工作有以下兩種,對數(shù)據(jù)進(jìn)行采集或者放入數(shù)據(jù)庫中執(zhí)行業(yè)務(wù)規(guī)則;檢索數(shù)據(jù)并將數(shù)據(jù)庫中的數(shù)據(jù)讀取出來。也就是進(jìn)行數(shù)據(jù)的增刪改查的操作。

數(shù)據(jù)的任何限制和要求都由模型層承擔(dān),包括在保存數(shù)據(jù)前將原始數(shù)據(jù)初始化,或者在數(shù)據(jù)傳給控制器前將數(shù)據(jù)格式化。這樣可以保證你可以不用在多個(gè)控制器中出現(xiàn)重復(fù)代碼,或者出錯(cuò)。

模型類型的文件保存在 /app/Models 這個(gè)目錄下,雖然他們也可以使用一個(gè)命名空間分組,但是還是建議你將模型文件放在這個(gè)目錄下。

點(diǎn)擊這里閱讀更多關(guān)于模型的相關(guān)內(nèi)容

控制器

控制器主要承擔(dān)了幾個(gè)不同的角色。最常見的就是他們會接收用戶的請求,然后判斷這個(gè)請求應(yīng)該執(zhí)行什么樣的操作。而這一過程通常會涉及到將數(shù)據(jù)發(fā)送給模型層保存,或者去請求模型層的數(shù)據(jù)返回給視圖??刂破饕矔脕砑虞d其他應(yīng)用程序請求的除模型參與的任務(wù)。

控制器的林外的任務(wù)就是用來處理和 HTTP 請求相關(guān)的所有事情——重定向、認(rèn)證, Web 安全,編碼等??傊刂破魇悄愕膽?yīng)用程序的入口,通過控制器訪問你的應(yīng)用的用戶才可以到達(dá)指定的地方并獲取他們想要的數(shù)據(jù)使用格式。

控制器通常會保存在 /app/Controllers 這個(gè)路徑下, 雖然你也可以使用命名空間分組,但是還是建議你將控制器存放在該目錄下。

點(diǎn)擊這里閱讀更多關(guān)于控制器的相關(guān)內(nèi)容

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號