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


  • 相关阅读:
    经典SQL语句大全
    主键,外键,主键表,外间表
    一个不错的shell 脚本教程 入门级
    初窥Linux 之 我最常用的20条命令
    try catch finally 用法
    一个初学者对于MVC架构的理解
    第二次阶段冲刺2(6月1号)
    第二次阶段冲刺1(5月31号)
    学习进度条十三(第14周)
    学习进度条十二(第13周)
  • 原文地址:https://www.cnblogs.com/rask/p/9219584.html
Copyright © 2011-2022 走看看