fuelphp 架構(gòu)概述
fuelphp 基于經(jīng)過(guò)實(shí)戰(zhàn)測(cè)試的 模型-視圖-控制器架構(gòu)以及 hmvc(分層mvc)支持。雖然 mvc 提供了靈活的分層應(yīng)用程序開(kāi)發(fā),但 hmvc 更進(jìn)一步實(shí)現(xiàn)了 web 應(yīng)用程序的小部件化。
fuelphp 的優(yōu)勢(shì)在于它不強(qiáng)制使用特定的方法來(lái)開(kāi)發(fā)應(yīng)用程序。它只是提供了一個(gè)簡(jiǎn)單易用的標(biāo)準(zhǔn)結(jié)構(gòu)。開(kāi)發(fā)人員可以自由使用 fuelphp 提供的預(yù)定義功能集,或者在需要時(shí)對(duì)其進(jìn)行修改。 fuelphp 提供的所有功能,包括核心功能,都可以根據(jù)應(yīng)用的需求進(jìn)行更改。
型號(hào)
模型是應(yīng)用程序的業(yè)務(wù)實(shí)體。 controller和view以model的形式交換數(shù)據(jù)。模型可以統(tǒng)一表示我們的業(yè)務(wù)數(shù)據(jù)。它使數(shù)據(jù)庫(kù)層能夠以標(biāo)準(zhǔn)方式與 web 應(yīng)用層交互,并提供選擇、保存、編輯和刪除我們的數(shù)據(jù)庫(kù)實(shí)體的選項(xiàng)。
控制器
典型的 mvc 應(yīng)用程序從控制器開(kāi)始。一旦用戶向 fuelphp web 應(yīng)用程序發(fā)送請(qǐng)求,該應(yīng)用程序就會(huì)收集有關(guān)該請(qǐng)求的所有信息并將其發(fā)送到控制器。 controller 完成請(qǐng)求頁(yè)面所需的業(yè)務(wù)邏輯,然后以 model 的形式調(diào)用相關(guān)的 view 以及處理后的數(shù)據(jù)。
查看
view 是 mvc 應(yīng)用程序的表示層。視圖決定如何向用戶顯示模型。它支持簡(jiǎn)單的數(shù)據(jù)渲染到高級(jí)布局,使網(wǎng)站能夠在所有頁(yè)面上規(guī)范化設(shè)計(jì)。 view 還提供主題化支持,從而可以在整個(gè)應(yīng)用程序中快速更改設(shè)計(jì)。
演示者
presenter 是 fuelphp 提供的一項(xiàng)特殊功能。它是控制器和視圖之間的粘合劑。 controller 可以分擔(dān)它的一些低級(jí)職責(zé),例如從數(shù)據(jù)庫(kù)中檢索模型、為視圖生成數(shù)據(jù)等。 controller 調(diào)用 presenter 而不是 view,后者又調(diào)用 view。 presenter 實(shí)現(xiàn)了業(yè)務(wù)邏輯和表示層的純粹分離。
分層 mvc
fuelphp 提供了從另一個(gè)控制器調(diào)用一個(gè)控制器的選項(xiàng),類似于來(lái)自客戶端(瀏覽器)的請(qǐng)求。如果任何控制器調(diào)用另一個(gè)控制器,被調(diào)用的控制器會(huì)將響應(yīng)返回給調(diào)用控制器,而不是將其呈現(xiàn)給客戶端(瀏覽器)。這將啟用 web 應(yīng)用程序的 widgetization。例如,評(píng)論部分可以顯示為獨(dú)立頁(yè)面,也可以顯示為主(博客)頁(yè)面的子部分。
模塊
fuelphp 的一個(gè)顯著特點(diǎn)是可以將 web 應(yīng)用程序的一部分轉(zhuǎn)換為模塊,可以在不同的應(yīng)用程序之間共享。例如,只需將模塊代碼從源應(yīng)用程序復(fù)制到目標(biāo)應(yīng)用程序,就可以在另一個(gè)應(yīng)用程序中重用為應(yīng)用程序創(chuàng)建的博客模塊。
請(qǐng)注意,創(chuàng)建新模塊與開(kāi)發(fā)主應(yīng)用程序一樣簡(jiǎn)單。結(jié)構(gòu)與主應(yīng)用程序類似,唯一的區(qū)別是模塊應(yīng)該編碼一個(gè)單獨(dú)的文件夾。
包裝
fuelphp 提供了一個(gè)選項(xiàng),可以將代碼組織到一個(gè)名為 package 的單元中。一個(gè)包可以包含 web 應(yīng)用程序所需的一個(gè)或多個(gè)功能。例如,orm、電子郵件等數(shù)據(jù)庫(kù)組件可以組織成一個(gè)包,并在需要時(shí)使用。
包與模塊的不同之處在于包不包含任何網(wǎng)頁(yè)或部分網(wǎng)頁(yè)。包可以在 fuelphp 以及任何其他 php 框架中使用。
工作流程
fuelphp 的工作流程簡(jiǎn)單易懂。如下圖所示。
- 用戶向應(yīng)用程序發(fā)送請(qǐng)求。
- 控制器接收請(qǐng)求并通過(guò)與模型交互來(lái)收集信息,模型又與數(shù)據(jù)庫(kù)交互。
- 控制器通過(guò)向其他控制器發(fā)送子請(qǐng)求來(lái)與其他控制器交互來(lái)收集信息。
- controller 將檢索到的模型發(fā)送到視圖,然后視圖生成演示文稿并將其作為響應(yīng)發(fā)送給客戶端。
- 在某些情況下,控制器可能會(huì)將控制權(quán)交給演示者。在這種情況下,演示者從模型中收集信息并將其發(fā)送給客戶端。此處,演示者不執(zhí)行任何業(yè)務(wù)邏輯,只是從數(shù)據(jù)庫(kù)中檢索模型。
- CodeIgniter 應(yīng)用程序架構(gòu)
- CodeIgniter MVC 框架
- CodeIgniter 頁(yè)面緩存
- CodeIgniter 基準(zhǔn)測(cè)試
- CodeIgniter 安全
- CakePHP 文件夾結(jié)構(gòu)
- CakePHP 控制器
- CakePHP 日志記錄
- CakePHP 會(huì)話管理
- FuelPHP 模型和數(shù)據(jù)庫(kù)
- FuelPHP 主題
- FuelPHP 包
- FuelPHP Cookie
- Laravel 控制器
- Laravel 錯(cuò)誤和日志
- Laravel 本地化
- Laravel 發(fā)送電子郵件
- Laravel 錯(cuò)誤處理
- Laravel 契約
- Laravel 歷史版本記錄