程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> FleaPHP 開發指南 - 2. FleaPHP 中的 MVC 模式

FleaPHP 開發指南 - 2. FleaPHP 中的 MVC 模式

編輯:vc教程

理解 FleaPHP 中,MVC 模式是如何實現的,以及其特點,可以幫助你更好的運用 FleaPHP。

--------------------------------------------------------------------------------

什麼叫做設計模式?
簡單來說,設計模式(Pattern)就是解決某一類問題的特定方法。由於這種特定方法在解決同類問題時具有通用性,所以我們就可以一次又一次的利用已有的經驗。具體到程序編寫上,就是我們可以用類似的程序結構和代碼解決同類型的問題。有關設計模式的詳細內容,可以閱讀經典著作《設計模式》,這裡我就不班門弄斧了。

MVC 實際上是一系列略有不同的模式。FleaPHP 采用的是Passive(被動)MVC 模式。

在 Passive MVC 模式中,Model(模型)完全不知道自己身處於 MVC 結構之中。換句話說,Model 就是一個普通的對象,與 MVC 模式裡面的其他組成部分完全沒有關聯。具體而言,MVC 模式涉及到下列三類對象:

M 代表 Model,即模型,用於封裝與業務邏輯有關的代碼和數據。例如對訂單的各種計算。
V 代表 VIEw,即視圖,用於呈現內容給用戶(也就是將程序運行的結果返回給浏覽器顯示)。例如商品列表頁面、後台登錄頁面。
C 代表 Controller,即控制器,用於接收用戶輸入(通過浏覽器發起的請求),然後調用模型(Model)對輸入數據進行處理並獲得處理結果。最後將結果傳遞到視圖(VIEw),從而讓用戶能夠看到自己操作的結果。例如用戶點擊刪除文章按鈕後,控制器調用操作文章的模型,刪除掉指定文章,最後通過視圖顯示成功刪除文章的提示信息。
經過這樣簡單的分離,我們就把應用程序操作數據的代碼(絕大部分 Web 應用程序都是對數據進行操作)和處理用戶輸入輸出的代碼分離開來了。

這種分離有許多好處:

清晰的將應用程序分隔為獨立的部分;
業務邏輯代碼能夠很方便的在多處重復使用;
方便開發人員分工協作;
如果需要,可以方便開發人員對應用程序各個部分的代碼進行測試。
如果你上面的文字讓你覺得很無聊或者不夠嚴謹,那麼說明你已經很熟悉 MVC 模式了。如果你看到上面的文字感到無所適從,那說明你還需要多閱讀一些面向對象相關的書籍和文檔。

--------------------------------------------------------------------------------

應用程序執行流程
下面的插圖描述了基於 FleaPHP 應用程序的執行流程。

index.php 是應用程序的入口文件,負責定義一些應用程序必須的常量,並載入 FleaPHP 框架,然後執行 run() 函數;
過濾器鏈完成 HTTP 請求數據解析、MagicQuotes 處理等工作;
應用程序控制根據 HTTP 請求,調用領域邏輯、表數據入口、組件等,並將處理結果傳送到視圖/模板;
視圖/模板根據應用程序控制器提供的數據生成輸出內容並傳送到浏覽器。
在 FleaPHP 中,index.php 裡面的 run() 在調用過濾器鏈後,會運行一個調度器。該調度器根據 HTTP 請求參數決定要調用的應用程序控制器。例如 index.PHP?controller=blog&action=list 這個請求表示要調用名為 blog 的應用程序控制器的 list 動作。然後調度器會調用這個控制器的動作。

在 FleaPHP 應用程序中,控制器實現為一個類,控制器動作就是該類的一個方法。

在控制器(MVC 模式中的 Controller)方法中,通過調用領域邏輯代碼(MVC 模式中的 Model)來處理 HTTP 請求提交的數據並獲得結果。然後再將結果傳遞給視圖(MVC 模式中的 VIEw)。視圖根據控制器方法提供的參數從模板文件構造最終的頁面內容,並返回給浏覽器。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved