MVC框架底层实现原理

zmboy php编程 2020-08-23 17:26 2789

摘要:一、MVC简介MVC全名是ModelViewController,是模型-视图-控制器的缩写,一种软件设计典范,是一种业务逻辑和数据显示分离的方法组织代码,...

一、MVC简介

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

学习MVC的目的:

  1. 快速上手各大主流PHP框架,例如yii框架、Thinkphp、ci等

  2. 快速适应多数公司的web开发需求

  3. 逐步接触和了解web系统架构的知识,为日后成为系统架构的中间力量做准备

MVC解决的问题:

在PHP还不支持面向对象之前,过程化的模式来创建。他们将像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。这样编写的代码程序十分的混乱。

  • 维护难

  • 开发速度慢

  • 二次开发难度高,工作量大

MVC的优势:

  • 三个层各司其职,互不干扰,有利于开发中的分工;

  • 有利于代码的重用;



二、MVC的组成与原理

MVC全名是Model View Controller, 是模型-视图-控制器的缩写。

  • 视图:我们能看到的web界面。

  • 控制器:向系统发出指令的工具和帮手。

  • 模型:模型的工作是按要求从数据库取出数据,当然这个解释还不全面,后面再逐步理解。

 

 

三、MVC工作流程

mvc.jpg

  • 第一步:浏览者 -> 调用控制器,对它发出指令

  • 第二步:控制器 -> 按指令选取一个合适的模型

  • 第三步:模型 -> 按控制器指令取相应数据

  • 第四步:控制器 -> 按指令选取相应的视图

  • 第五步:视图 -> 把第三步取到的数据按用户想要的样子显示出来

四、路由的实现代码

<?php
//底层MVC路由的实现原理
// $server = $_SERVER;                   //  通过print_r打印可以查看服务器信息
// $path_info = $_SERVER[PATH_INFO];        //  /home/zmboy
// $script_name = $_SERVER[SCRIPT_NAME];    //  /Index.php
// $request_uri = $_SERVER[REQUEST_URI];    //  /index.php/home/zmboy

$path = ltrim($_SERVER[PATH_INFO],'/');  //去除路劲中最左边的正斜线'/'
$controller_method = explode('/',$path);   //将路径分隔成控制器名称和方法名称返回一个数组
$controller_method[0] = ucfirst($controller_method[0]);   //将控制器名称首字母大写
$controller = $controller_method[0];       //将控制器名称给到变量$controller
$method = $controller_method[1];           //将方法名称给到变量$method
require_once __DIR__.'/controller/'.$controller.'.php';  //通过控制器名称引入控制器
$obj = New $controller;                    //实例化
$res = $obj->$method();                    //调用控制器中的方法并给到变量$res
exit($res);                                //暂停并执行$res

// echo '<pre>';
// print_r($controller_method);

附上简易mvc源码

Image 1.png

点击下方下载源码   ↓↓↓

                                  mvc.zip


本篇文档由 zmboy 从日常学习中精心整理而出,有任何疑问均可留言评论,转载请以超链接形式注明出处!

相关推荐

评论列表
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
关闭

用微信“扫一扫”