首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

FleaPHP 框架中的 Passive MVC 模式實作詳解

     編輯:VC 教學

Passive MVC 架構定義

FleaPHP 採用 Passive (被動) MVC:Model 完全不知曉 MVC 結構存在,只是普通物件。三角色職責:

  • Model (模型):封裝業務邏輯與資料操作 (如訂單計算、資料庫存取)。
  • View (視圖):負責呈現內容給瀏覽器 (HTML 頁面、JSON 回應)。
  • Controller (控制器):接收 HTTP 請求 → 呼叫 Model 處理 → 將結果傳給 View 渲染輸出。

執行流程

  1. index.php 定義常數、載入框架、呼叫 run()。
  2. 過濾器鏈:解析 HTTP 請求、處理 Magic Quotes、輸入過濾。
  3. 調度器:依 ?controller=blog&action=list 參數決定呼叫 BlogController::listAction()。
  4. Controller 方法:調用領域邏輯 (Model) 處理資料,取得結果。
  5. View/模板:根據 Controller 提供的資料渲染模板檔,輸出至瀏覽器。

代碼結構範例

// Controller
class BlogController extends Flea_Controller {
    public function listAction() {
        $model = new BlogModel();           // Model 實例
        $posts = $model->getRecentPosts();  // 呼叫業務邏輯
        $this->view->posts = $posts;        // 傳遞資料給 View
        $this->view->render('blog_list');   // 渲染模板 blog_list.tpl
    }
}

// Model (純粹類別,無框架基類)
class BlogModel {
    public function getRecentPosts() {
        // 資料庫查詢、快取邏輯...
        return $data;
    }
}

// View: blog_list.tpl (Smarty/PHP 模板)
{foreach $posts as $post}
    

{$post.title}

{$post.summary}

{/foreach}

優勢

  • 職責清晰分離:業務邏輯可獨立單元測試,無需啟動 Web 伺服器。
  • Model 可複用:同一 Model 服務 Web API、CLI 命令、單元測試。
  • 團隊協作:前端專注模板,後端專注 Model/Controller。

關鍵提醒

Controller **不應** 包含 SQL、HTML 生成、Session 直接操作等細節;這些屬於 Model 或 View/Helper 職責。Controller 只做「流程編排」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved