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