MVC的工作原理以及目標就是將用戶請求的URL映射到“控制器中的方法上”

MVC 是一種使用 MVC(Model View Controller 模型-視圖-控制器)設計創建 Web 應用程序的模式: 

  • Model(模型)表示應用程序核心(比如數據庫記錄列表)

  • View(視圖)顯示數據(數據庫記錄)

  • Controller(控制器)處理輸入(寫入數據庫記錄)

Model(模型)是應用程序中用于處理應用程序數據邏輯的部分,通常模型對象負責在數據庫中存取數據。

View(視圖)是應用程序中處理數據顯示的部分,通常視圖是依據模型數據創建的。

Controller(控制器)是應用程序中處理用戶交互的部分,通常控制器負責從視圖讀取數據,控制用戶輸入,并向模型發送數據。

mvc.jpg

接下來通過代碼來展示MVC框架的原理:

mvc.png

如圖創建項目,首先創建 模型 文件也就是數據:Model.php

// M Model 數據,用模型 用二維數組模擬數據
$data = [
    ['id'=>1,'name'=>'老王','age'=>22,'email'=>'[email protected]'],
    ['id'=>2,'name'=>'老王','age'=>22,'email'=>'[email protected]'],
    ['id'=>3,'name'=>'老王','age'=>22,'email'=>'[email protected]'],
    ['id'=>4,'name'=>'老王','age'=>22,'email'=>'[email protected]'],
    ['id'=>5,'name'=>'老王','age'=>22,'email'=>'[email protected]']
];

接下來創建 視圖模板 文件 顯示數據:show.html

<table>
  <tr>
    <th>ID</th>
    <th>姓名</th>
    <th>年齡</th>
    <th>郵箱</th>
  </tr>
  <?php foreach($data as $staff): ?>
    <tr>
      <td><?=$staff['id']; ?></td>
      <td><?=$staff['name']; ?></td>
      <td><?=$staff['age']; ?></td>
      <td><?=$staff['email']; ?></td>
    </tr>
  <?php endforeach; ?>
</table>

接下來創建 控制器文件,方法內指定模板文件以及顯示的數據:Staff.php

<?php
class Staff
{
    public function show($data){
        // 引入模板
        include __DIR__.'/../view/show.html';
    }
}

最后一步創建這個小MVC項目的入口文件:index.php

<?php
// 1、將用戶請求的控制器和操作從URL地址中取出
$url = explode('/',$_SERVER['REQUEST_URI']);
$controller = ucfirst($url[3]);
$action = $url[4];

// 2、加載控制器類和模型類文件
require_once __DIR__.'/controller/'.$controller.'.php';
require_once __DIR__.'/model/Model.php';

// 3、調用控制器中的方法
echo (new $controller)->$action($data);

此時MVC文件以及入口文件創建完畢,通過本地虛擬主機創建的域名和MVC項目進行綁定,例如域名為 mvc.io

在瀏覽器的地址欄中輸入:mvc.io/index.php/staff/show   當頁面中出現以下界面則證明MVC項目創建成功

22.png