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'=>'wang@qq.com'],
    ['id'=>2,'name'=>'老王','age'=>22,'email'=>'wang@qq.com'],
    ['id'=>3,'name'=>'老王','age'=>22,'email'=>'wang@qq.com'],
    ['id'=>4,'name'=>'老王','age'=>22,'email'=>'wang@qq.com'],
    ['id'=>5,'name'=>'老王','age'=>22,'email'=>'wang@qq.com']
];

接下来创建 视图模板 文件 显示数据: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