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()方法进行设计。

posted @ 2018-06-25 17:42  rask  阅读(298)  评论(0编辑  收藏  举报