雲端教學課程
PHP MVC
MVC 概念

在開始之前,先同步程式碼
有帶上週檔案的可以把資料庫匯進去,
或是下載已經整理好的版本。
- 把程式解壓縮到 C:\wamp\www\ 資料夾裡。
- 新增blog資料庫,再把 blog.sql 倒入。
開始拆程式碼
Model
- 建立一個model資料夾。
- 在裡面建立 message.php。
- 將所有function都移進去。
- 測試 - 在require 'config.php'; 後新增一行
require 'model\message.php';
把要用到的function包進來。
繼續拆程式碼
View
- 建立一個View資料夾。
- 把HTML輸出的部份各別放進去。
- 在處理完資料後,把View給require進來。
<?php
require 'config.php';
require 'model/message.php';
$new_message_id = new_message( $db ,
$_POST['messager'] ,
$_POST['message']
);
require 'view/message_add.php';
其實 controller 已經出來了

Countroller 負責接收要求,
再引入所需要的Model來處理資料,
最後,再交給對應的View來輸出。
整理程式碼
把Controller合併
- 用GET的參數來控制Controller狀態
- action=list
- action=add
- action=delete
- 判斷完後再引入需要的模組後交給View去顯示。
- 新增一個 index.php 做為 Controller。
整理程式碼
把Controller合併
<?php require 'config.php'; require 'model/message.php'; if( isset( $_GET['action'] ) ){ switch($_GET['action']){ case 'list': //message.php break; case 'add' : //message_add.php break; case 'delete' : //message_delete.php break; default : //建立一個錯誤頁面,顯示"找不到頁面!"。 require 'view/error.php'; }
}else{ require 'view/error.php'; }
整理程式碼
把資料流串起來 - "view\message.php"
原始程式碼
<form action="message_delete.php" method="post">
<form action="?action=delete" method="post">
原始程式碼
<form action="message_add.php" method="post">
修改成
<form action="?action=add" method="post">
整理程式碼
整理 Model,並加上註解
<?php class message{ /** * 初始化message物件並連結db * * @param PDO $db * @return void */ function __construct( PDO $db){ $this->db = $db; }
/** * 回傳留言版內所有留言 * * @param 無 * @return array('rows'=>所有留言內容,'rowcount'=>留言數量) */ function getData() { $db = $this->db; ... } ... }
整理程式碼
修改Controller
<?php require 'config.php'; require 'model/message.php'; if( isset( $_GET['action'] ) ){ $message = new message($db); //新增message物件 switch($_GET['action']){ case 'list': $data = $message->getData(); //呼叫方法 require 'view/message.php'; break; ... default : require 'view/error.php'; } }
else{ require 'view/error.php'; }
進階MVC
每個Framework的MVC方式都不同,
理念都是讓程式碼好修改、管理。
View的部份有些OpenSource會使用Smarty來處理。
$smarty->assign('best_goods', get_recommend_goods('best'));
// 推薦商品
$smarty->assign('new_goods', get_recommend_goods('new'));
// 最新商品
$smarty->assign('hot_goods', get_recommend_goods('hot'));
// 熱門文章
接下來,我們來把留言版加上會員登入功能。
讓我們繼續寫下去...
PHP-MVC
By jackai
PHP-MVC
- 3,125