zoukankan      html  css  js  c++  java
  • PHP21 MVC

    学习目标

    • MVC设计模式
    • 单一入口机制
    • MVC的实现

    MVC设计模式

    • Model(模型)

        是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。

    • View(视图)

        是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。

    • Controller(控制器)

        是应用程序中处理用户交互的部分。通常控制器负责处理用户请求,从模型读取数据,并向视图发送数据。

    单一入口机制

    多入口

    通过访问不同的php文件执行相应功能来完成用户请求。例如:

    index.php  //网站首页
    list.php?page=3 //内容列表页
    info.php?id=20  //内容详细页
    login.php   //用户登录页
    

      

    单一入口

    web 程序所有的请求都指向一个脚本文件,使用一个php文件处理HTTP请求。

    如图,以index.php为入口文件。避免用户在MVC模型中直接访问控制器导致程序混乱。

    单一入口程序架构逻辑示意图如下所示:

    单一入口文件示例代码(MVC和index文件位于同一目录下)

    Model

    class HomeModel
    {
        public  function  getData(){
            return "从数据库获取到了数据!";
        }
    }
    

      

    View

    class HomeView
    {
        public function display($data){
            echo $data;
        }
    
    }
    

      

    Controller

    class HomeController
    {
        //显示Home首页函数
        public function index(){
            //1.实例化模型
            $model=new HomeModel();
            //2.读取数据库数据
            $data=$model->getData();
            //3.实例化视图
            $view=new HomeView();
            //4.显示数据
            $view->display($data);
        }
    }
    

      

     index.php

    //自动加载类文件
    function __autoload($className){
      include_once $className.".class.php";
    }
    //单一入口路由选择和事件分发
    //控制器命名规范:控制器名称+Controller
    //View、Model规则一致
    //控制器名称按照类名规范
    $controller=isset($_GET['c'])?$_GET['c']:"home";
    $action=isset($_GET['a'])?$_GET['a']:"index";
    //初始化控制器 
    $controllerName=ucfirst(strtolower($controller))."Controller";
    echo $controllerName;
    $c=new $controllerName();

        

    MVC的实现

    框架执行流程

    定义目录结构

     

    配置文件定义

    configs.php文件定义数据库配置信息和默认路由信息。

    常量定义

    base.php文件用于定义系统常量。

    核心运行类定义

    把入口文件需要处理的请求分发功能定义到核心运行类中。

      

    自动加载类设计

    所文件的加载都是相对于入口文件进行加载。

     

    入口文件设计

    基础路由设计

    按照命名空间命名规范,定义home模块的IndexController控制器及其方法index()。index()方法简单输出测试数据。

    对很核心运行类run()方法进行设计。



    本博客文章未经许可,禁止转载和商业用途!

    如有疑问,请联系: 2083967667@qq.com


  • 相关阅读:
    Linux常用命令-centos
    USACO 2006 Open, Problem. The Country Fair 动态规划
    USACO 2007 March Contest, Silver Problem 1. Cow Traffic
    USACO 2007 December Contest, Silver Problem 2. Building Roads Kruskal最小生成树算法
    USACO 2015 February Contest, Silver Problem 3. Superbull Prim最小生成树算法
    LG-P2804 神秘数字/LG-P1196 火柴排队 归并排序, 逆序对
    数据结构 并查集
    浴谷国庆集训 对拍
    1999 NOIP 回文数
    2010 NOIP 普及组 第3题 导弹拦截
  • 原文地址:https://www.cnblogs.com/rask/p/9219584.html
Copyright © 2011-2022 走看看