MVC (Model-View-Controller) 是現代 Web 框架的基石。本文用最精簡的程式碼示範核心流程:瀏覽器請求 → 控制器 → 模型取資料 → 控制器選視圖 → 視圖渲染輸出,助你在 10 分鐘內建立直觀心智模型。
?c=test&a=show)<?php
class TestController {
public function show() {
$model = new TestModel(); // 2. 選模型
$data = $model->get(); // 3. 取資料
$view = new TestView(); // 4. 選視圖
$view->display($data); // 5. 渲染
}
}
?>
<?php
class TestModel {
public function get(): string {
// 實際專案:連 DB、查詢、回傳陣列/DTO
return "Hello World from Model!";
}
}
?>
<?php
class TestView {
public function display(string $data): void {
// 實際專案:include 模板檔、echo 變數、迴圈輸出
echo "<h1>{$data}</h1>";
}
}
?>
<?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/PDO | Eloquent / ActiveRecord / ORM、關聯、範疇、事件 |
| 視圖 | PHP 直接 echo | Blade / Twig / Smarty、佈局繼承、元件、快取片段 |
| 請求/回應 | $_GET/$_POST, echo | Request/Response 物件、JSON API、檔案下載、Streaming |
MVC 本質是「關注點分離」。上述 4 檔案即包含完整骨架:入口 → 控制器協調 → 模型供料 → 視圖呈現。理解此流程後,閱讀任何框架原始碼都能快速定位職責邊界。建議動手把範例跑起來,再嘗試加入「資料庫連線、表單提交、錯誤處理」三項功能,即可自然過渡到實戰框架開發。