• 初识MVG思想及实际操作(后续补档)


    一、MVG概念(摘取)

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑

    MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:

    • Model(模型)表示应用程序核心(比如数据库记录列表)。
    • View(视图)显示数据(数据库记录)
    • Controller(控制器)处理输入(写入数据库记录)。

    MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制

    • Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
    • View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
    • Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

    二、实践理论(摘取)

    开发模式

    • 数据库中的一张表对应一个控制器类,对应一个模型类,对应多个视图
    • 对表的多个操作都会封装成控制器类中的方法
    • 所有针对数据库的操作应该放到模型类中
    • 模型类中会定义增删改查等方法
    • 不要试图直接访问html静态文件,而是访问入口文件,然后通过参数指定要访问的控制器和方法名称,控制器中的方法再负责将html文件展示给我们

    smarty

    将压缩包解压后,将libs 文件夹拷贝到项目的根目录下,并重命名为 smarty,然后在控制器类中引入 Smarty.class.php

    三、实际代码

    创建模型类 NewsModel.php

    <?php
    class NewsModel
    {
        function list() {
            $dns = "mysql:host=localhost;dbname=test";
            $user = 'root';
            $password = 'root';
            $pdo = new PDO($dns, $user, $password);
            $res = $pdo->query("select * from news");
            $news = $res->fetchAll(PDO::FETCH_ASSOC);
            return $news;
        }
    }

    创建控制器类,NewsController.php

    <?php
    include 'smarty/Smarty.class.php';
    include 'NewsModel.php';
    class NewsController
    {
        // 显示所有的新闻数据
        public function index()
        {
            // 创建NewsModel类的对象
            $model = new NewsModel();
            $news = $model->list();
            // 创建Smarty 类的对象
            $smarty = new Smarty();
            $smarty->assign("news", $news);
            // 读取news.html文件的源代码,并发送给浏览器
            $smarty->display('news.html');
        }
    }

    list.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <link href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.css" rel="stylesheet">
    </head>
    <body>
      <div class="container">   
      <table class="table">
        <tr>
          <th>编号</th>
          <th>标题</th>
          <th>创建时间</th>
        </tr>
       {foreach $news as $item}
       <tr>
         <td>{$item['id']}</td>
         <td>{$item['title']}</td>
         <td>{$item['create_time']}</td>
       </tr>
       {/foreach}
      </table>
      </div>
    </body>
    </html>

    在浏览中要直接访问控制器,因为控制器是模型与视图的桥梁

    • 控制器负责调用模型中的方法,查询数据
    • 控制器将模型中返回的数据分配给视图

    但是我们无法在浏览器中直接访问某个控制器类中的具体方法

    解决方案

    在项目的根目录下,新建一个 index.php

    在这个文件中,获取用户想要访问的控制器和方法名称,并进行调用

    <?php
    include 'NewsController.php';
    // 获取请求的控制器名称
    $c=$_GET['c'];
    // 获取请求的方法名称
    $a=$_GET['a'];
    // 创建控制器类的对象
    $ctrl=new $c();
    // 调用请求的方法
    $ctrl->$a();

    说明:这个 index.php 有一个专业的名词:入口文件

    地址栏中输入如下地址方法

    http://localhost/index.php?c=newscontroller&a=index

    后续上传详细自我理解

  • 相关阅读:
    Linux设置系统时间并同步到硬件
    centos6.9安装mysql5.7.22并设置初始密码
    mysql修改数据库文件存储位置
    mysql1.7(mysql优化,mysql-mmm软件介绍,mysql高可用集群。)
    mysql1.6(主从同步,数据读写分离)
    Mysql1.5(binlog增量备份与恢复,innobackupex)
    Mysql1.4(用户授权,权限撤销;图形管理工具,数据备份-恢复)
    MYSQL1.3(存储引擎,数据导入导出,管理表记录)
    MYSQL1.2(字段管理,索引类型)
    mysql1.1(搭建,数据类型,基本使用)
  • 原文地址:https://www.cnblogs.com/Rawan/p/11986325.html
Copyright © 2020-2023  润新知