在 PHP 開發中,MVC(Model-View-Controller)架構模式是將程式碼進行分層、解耦的經典方案。為了讓大家更直觀地理解 MVC 的運作機制,本文將以一個簡單的「新聞文章發布系統」為例,對比傳統混寫模式與 MVC 模式的差異,幫助初學者快速掌握核心概念。
在早期的 PHP 開發中,常見的做法是直接在 HTML 中嵌入 PHP 程式碼,資料庫連線、查詢、輸出邏輯全部耦合在同一個檔案中。雖然這樣寫起來快,但隨著專案規模增長,維護難度會呈指數級上升。以下是典型的傳統寫法範例:
<?php
mysql_connect(…);
$result = mysql_query('select * from news order by article_date desc');
?>
<html>
<body>
<h1>News Articles</h1>
<?php while ($row = mysql_fetch_object($result)) { ?>
<h2><?php echo $row->headline ?></h2>
<p><?php echo $row->body ?></p>
<?php } ?>
</body>
</html>
這種寫法的缺點顯而易見:業務邏輯與視圖混雜、難以複用、測試困難、團隊協作時前後端互相干擾。
MVC 將應用程式拆分為三個核心組件,各司其職:
負責封裝資料庫操作,提供乾淨的資料存取介面:
<?php
function get_articles() {
mysql_connect(…);
$result = mysql_query('select * from news order by article_date desc');
$articles = array();
while ($row = mysql_fetch_object($result)) {
$articles[] = $row;
}
return $articles;
}
?>
接收請求、調用 Model 取得資料、決定載入哪個 View:
<?php
$articles = get_articles();
display_template('articles.tpl');
?>
只負責資料的展示,不包含資料庫操作:
<html>
<body>
<h1>News Articles</h1>
<?php foreach ($articles as $row) { ?>
<h2><?php echo $row->headline ?></h2>
<p><?php echo $row->body ?></p>
<?php } ?>
</body>
</html>
採用 MVC 後,程式碼結構更清晰,便於維護與擴展。但實際專案中還會面臨模板引擎選擇、路由分發、輸入驗證、安全防護等進階議題。本文僅作為入門演示,旨在幫助讀者建立分層思維,為深入學習現代 PHP 框架(如 Laravel、Symfony)打下基礎。