首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP MVC 模式入門:從核心流程到最簡單實作範例

     編輯:PHP 綜合知識

MVC (Model-View-Controller) 是現代 Web 框架的基石。本文用最精簡的程式碼示範核心流程:瀏覽器請求 → 控制器 → 模型取資料 → 控制器選視圖 → 視圖渲染輸出,助你在 10 分鐘內建立直觀心智模型。

五步驟核心流程

  1. 瀏覽器 呼叫控制器動作 (如 ?c=test&a=show)
  2. 控制器 依動作決定使用哪個模型
  3. 模型 執行資料邏輯 (DB 查詢、運算、驗證)
  4. 控制器 將資料傳給對應視圖
  5. 視圖 只負責呈現,不含商業邏輯

最簡單實作 (三個檔案 + 入口)

1. 控制器 testController.class.php

<?php
class TestController {
    public function show() {
        $model  = new TestModel();      // 2. 選模型
        $data   = $model->get();        // 3. 取資料
        $view   = new TestView();       // 4. 選視圖
        $view->display($data);          // 5. 渲染
    }
}
?>

2. 模型 testModel.class.php

<?php
class TestModel {
    public function get(): string {
        // 實際專案:連 DB、查詢、回傳陣列/DTO
        return "Hello World from Model!";
    }
}
?>

3. 視圖 testView.class.php

<?php
class TestView {
    public function display(string $data): void {
        // 實際專案:include 模板檔、echo 變數、迴圈輸出
        echo "<h1>{$data}</h1>";
    }
}
?>

4. 入口檔 test.php

<?php
require_once 'testController.class.php';
require_once 'testModel.class.php';
require_once 'testView.class.php';

$controller = new TestController();
$controller->show(); // 瀏覽器輸出:Hello World from Model!
?>

進階:加入路由與單一入口

<?php
// index.php — 單一入口
require_once 'autoload.php'; // PSR-4 自動載入

// 簡易路由解析
$c = $_GET['c'] ?? 'Index';
$a = $_GET['a'] ?? 'index';
$controllerClass = ucfirst($c) . 'Controller';
$action = $a . 'Action';

if (class_exists($controllerClass)) {
    $ctrl = new $controllerClass();
    if (method_exists($ctrl, $action)) {
        $ctrl->$action();
    } else {
        http_response_code(404);
        echo "Action {$action} not found";
    }
} else {
    http_response_code(404);
    echo "Controller {$controllerClass} not found";
}
?>

現代框架如何擴展這個骨架

核心概念簡易版Laravel / Yii / ThinkPHP
路由手工解析 $_GET路由表、正則、中介軟體、RESTful Resource
控制器純類別方法基底 Controller、依賴注入、授權策略、資源控制器
模型手寫 SQL/PDOEloquent / ActiveRecord / ORM、關聯、範疇、事件
視圖PHP 直接 echoBlade / Twig / Smarty、佈局繼承、元件、快取片段
請求/回應$_GET/$_POST, echoRequest/Response 物件、JSON API、檔案下載、Streaming

常見誤區

  • ❌ 視圖寫 SQL — 視圖只能用控制器傳來的變數。
  • ❌ 控制器寫 HTML — 控制器只決定「用什麼資料、渲染哪個視圖」。
  • ❌ 模型處理 HTTP 請求 — 模型不知 Request/Session 為何物。
  • ✅ 單一職責 — M/V/C 各司其職,單元測試才容易。

總結

MVC 本質是「關注點分離」。上述 4 檔案即包含完整骨架:入口 → 控制器協調 → 模型供料 → 視圖呈現。理解此流程後,閱讀任何框架原始碼都能快速定位職責邊界。建議動手把範例跑起來,再嘗試加入「資料庫連線、表單提交、錯誤處理」三項功能,即可自然過渡到實戰框架開發。

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