使用 PHP 建立一個基本的 MVC(模型-視圖-控制器)架構是一個涉及組織程式碼和理解物件導向程式設計(OOP)概念的挑戰。以下是一個非常簡化的範例,展示如何創建一個基礎的 MVC 框架。
目錄結構
首先,創建以下的目錄結構:
mvc/
|-- controllers/
|-- models/
|-- views/
|-- index.php
1. 建立進入點檔案(index.php)
進入點檔案是 MVC 框架的起點。它負責接收請求並根據請求調用相應的控制器。
// index.php
require_once 'controllers/HomeController.php';
$url = $_GET['url'] ?? 'home';
switch ($url) {
case 'home':
$controller = new HomeController();
$controller->index();
break;
// 可以增加更多的路由和控制器
default:
echo "404 Not Found";
}
2. 定義控制器(controllers/)
控制器負責處理用戶的請求,調用模型獲取數據,然後將數據傳遞給視圖。
// controllers/HomeController.php
require_once 'models/HomeModel.php';
require_once 'views/HomeView.php';
class HomeController {
public function index() {
$model = new HomeModel();
$data = $model->getData();
$view = new HomeView();
$view->render($data);
}
}
3. 建立模型(models/)
模型負責處理所有的數據邏輯。例如,從資料庫中獲取、插入或更新數據。
// models/HomeModel.php
class HomeModel {
public function getData() {
// 從資料庫或其他來源獲取數據
return ['title' => '歡迎來到我的 MVC 框架!'];
}
}
4. 建立視圖(views/)
視圖負責呈現數據。控制器將數據傳遞給視圖,視圖則生成最終的用戶介面。
// views/HomeView.php
class HomeView {
public function render($data) {
echo "<h1>{$data['title']}</h1>";
// 輸出更多 HTML
}
}
5. 實現自動加載
在實際應用中,手動引入每個檔案是不實際的。可以使用 PHP 的自動加載功能。
// 在 index.php 中
spl_autoload_register(function ($class_name) {
if (file_exists('controllers/' . $class_name . '.php')) {
require_once 'controllers/' . $class_name . '.php';
} elseif (file_exists('models/' . $class_name . '.php')) {
require_once 'models/' . $class_name . '.php';
} elseif (file_exists('views/' . $class_name . '.php')) {
require_once 'views/' . $class_name . '.php';
}
});
總結
這只是一個非常基礎的 MVC 框架範例。在實際開發中,可能需要考慮許多其他因素,如路由更複雜的處理、資料庫抽象、模板引擎整合、異常處理、安全性等。