前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用PHP写一个简单的MVC实例

用PHP写一个简单的MVC实例

作者头像
岳泽以
发布2023-05-20 14:41:17
4060
发布2023-05-20 14:41:17
举报
文章被收录于专栏:岳泽以博客岳泽以博客

MVC是一种人为划分应用开发流程的方式,使开发工作更加高效;

它有三个部分:模型(Model)、视图(View)、控制器(Controller)

传统WEB开发

传统WEB开发将数据处理与展示写在一起,视图直接从模型获取数据并显示,代码复杂,维护困难,不利于团队分工,开发效率低。如果业务逻辑不复杂,通常一个PHP文件就能搞定。

代码语言:javascript
复制
<?php
// json数据

// 如果json数据为一个文件可以如下引用
// 读取 data.json 文件中的内容为一个字符串
// $json = file_get_contents('data.json');
$json = '[
  {
    "id": "1",
    "navname": "岳泽以",
    "navlink": "https://www.yuezeyi.com/",
    "xuhao": "3"
  },
  {
    "id": "2",
    "navname": "百度",
    "navlink": "https://www.baidu.com/",
    "xuhao": "2"
  },
  {
    "id": "3",
    "navname": "腾讯",
    "navlink": "https://www.baidu.com/",
    "xuhao": "1"
  }
]';
// 将json数据转为数组或对象
$data = json_decode($json, true);
?>

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <h3 style="text-align: center;">导航列表</h3>
  <table border="1" cellspacing="0" width="50%" align="center">
    <tr>
      <th>id</th>
      <th>navname</th>
      <th>navlink</th>
      <th>xuhao</th>
    </tr>
    <?php foreach ($data as $value) : ?>
      <tr>
        <td><?php echo $value['id'] ?></td>
        <td><?php echo $value['navname'] ?></td>
        <td><?php echo $value['navlink'] ?></td>
        <td><?php echo $value['xuhao'] ?></td>
      </tr>
    <?php endforeach ?>
  </table>
</body>

</html>

MVC模式开发

MVC就是各写各的,模型负责数据处理,而视图负责数据显示,具体流程如下:

  1. 创建一个模型,生成并返回一组数据;
  2. 创建一个视图,展示模型生成的数据;
  3. 创建一个控制器,将模型与视图整合;
  4. 创建一个入口文件,调用控制器完成操作;

创建模型文件(Model)

创建一个模型Model类,在类中创建getData()方法,这个方法会返回数据。

代码语言:javascript
复制
<?php
class Model
{
  public function getData()
  {
    // 读取一个数据
    $json = file_get_contents('data.json');
    // 将json数据转为数组或对象
    $data = json_decode($json, true);
    // 返回数据
    return $data;
  }
}

创建视图文件(View)

创建View类,在类中创建display()方法,这个方法将数据以HTML方式显示。

代码语言:javascript
复制
<?php
class View
{
  public function display($data)
  {
    // 这里做一个表格来显示数据
    $table = ' <h3 style="text-align: center;">导航列表</h3>';
    $table .= '<table border="1" cellspacing="0" width="50%" align="center">
    <tr>
      <th>id</th>
      <th>navname</th>
      <th>navlink</th>
      <th>xuhao</th>
    </tr>';
    foreach ($data as $value) {
      $table .= '<tr>';
      $table .= '<td>' . $value['id'] . '</td>';
      $table .= '<td>' . $value['navname'] . '</td>';
      $table .= '<td>' . $value['navlink'] . '</td>';
      $table .= '<td>' . $value['xuhao'] . '</td>';
      $table .= '</tr>';
    }
    $table .= '</table>';
    // 返回这个表格
    return $table;
  }
}

创建控制器文件(Controller)

创建Controller类,在类中创建show()方法,由该方法完成模型与视图的调用。

代码语言:javascript
复制
<?php
class Controller
{
  public function show()
  {
    // 在model获取到数据
    $data = Model::getData(); //调用Model类中静态方法getDdata
    // 将数据传给view显示
    echo View::display($data); //调用View类静态方法display()显示数据
  }
}

创建入口文件(index.php)

入口文件的功能是完成类入件引入和控制器的调用。

代码语言:javascript
复制
<?php
require_once('Model.php'); //引入模型类
require_once('View.php');  //引入视图
require_once('Controller.php'); //引入控制器类

// 调用控制器中的show方法显示数据,写死了
// Controller::show();
//设置如果默认的控制器和类方法
$c = isset($_GEt['c']) ? $_GET['c'] : 'Controller'; //获取URL参数c=>控制器类名
$f = isset($_GET['f']) ? $_GET['f'] : 'show'; //获取URL参数a=>控制器类中的方法名

$controller = new $c; //实例化控制器,获取控制器对象$controller
$controller->$f(); //调用控制器中的show()方法

此时,访问你的地址/index.php则会默认展示自己设置的控制器中的方法,如果访问以下地址:

/index.php?c=controller&f=show

则会访问Controller控制器中的show方法

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023 年 05 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 传统WEB开发
  • MVC模式开发
    • 创建模型文件(Model)
      • 创建视图文件(View)
        • 创建控制器文件(Controller)
        • 创建入口文件(index.php)
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档