MVC 模型、视图、控制及其单入口文件的mvc的工作原理
什么是mvc,mvc就是模型视图控制,模型就是model,在项目中负责数据库相关的操作,视图就是view ,负责页面的展示和数据的展示,控制就是controller ,负责中间的逻辑转换,数据的接收,输出的处理。mvc的好处是让项目开发能够让代码和页面尽可能的分解开,相互之间的关联尽可能的少。这只是一种开发方式,据说是从java过来的,真是坑人的java啊。
常见的php框架基本上都属于mvc的开发模式,例如:Yii(大赞),Ci,Tp(国产),这几个是我用到过的,还有很多php的框架太多了,就不一一例举了,开发模式大同小异,这里我为什么大赞Yii 这个框架呢,因为这个框架设计的太强大了,不愧是全栈框架,像ci和tp 就是一般的框架了,功能不多。没啥亮点,呵呵。
开发流程是什么,一般在项目目录下面有一个叫做controller的文件夹,里面写控制器,在和他(一般)平级的目录view中放入视图也就是页面,还有一个model的目录,放着和数据库表相关的数据表命名的model文件 ,主要是在controller 里面写功能,然后使用model文件里面提供的方法对数据库进行增删改查。视图,一般是在控制器里面直接调用,Yii就是$this->render(),CI就是$this->load->view(),TP就是$this->display();这几个方法基本上就是直接输出数据 然后echo出来。或者是加上第三个参数通过ob_start() ob_get_contents()这样的方法获取buffer 内容return 出来,再根据具体需求做处理
什么是单入口(index.php)
单入口一般就是只把一个文件index.php暴露出来,能够通过这个文件访问相关的内容,这种模式的工作原理是什么呢?其实就是通过index.php,将系统的核心文件载入进来,然后再通过核心文件里面的路由类对,请求的内容进行解析,解析出来要访问的Controller类和其中的方法。看不懂没关系直接上图;
当我们访问deme/index.php/welcome/index
以Ci为例:
首先将这样的一个目录暴露出来
,能够访问到index.php,这个时候index,php文件开始执行,打开这个文件我们跟着代码走
首先定义了一下环境常量,
然后定义一些
项目目录常量为后面加载文件做准备,然后略过部分走到index.php的最下面
这里就开始真正的工作了开始引入系统核心文件。
我们打开这个文件看看到底写了点什么东西,打开里面依然是引入各种常量,配置文件,继续走我们看到有一行这个
这是什么?我们打印出来看看
这就是那个系统核心的路由类。
继续往下看
我们看到有一个叫做$RTR->class 类的属性,打印出来,我们看到了什么,
看到
两个字符串,一个是welcome,一个是index,welcome就是默认要访问的控制器,index就是我们要访问的方法名称。好了,这个时候就真正开始启动了,这个时候先判断文件是否存在,如果存在就引入,不存在就404,然后 $c = new Controller();如图:
先把要访问的类加载,然后实例化一个,
然后再调用call_user_func_array这个函数,执行实例化对象的方法,就相当于 $welcome = new Welcome();
然后再执行 $welcome->index();
好了整个过程大概就是这个样子,如果不懂可以多看几眼,体会一下,就能理解了,有机会我也写一个简单的mvc,单入口文件的框架,这样能够让大家更清楚的理解这个东西。
MVC 模型、视图、控制及其单入口文件的mvc的工作原理的更多相关文章
- opencart 单入口文件简单分析
opencart 单入口文件简单分析 opencart是基于mvcl的商城系统,据说是一个外国有人单独开发.比较牛叉.但是又不大符合国人习惯,目前国内opencart社区也是不少. 简单分析了下单 ...
- thinkphp 的两种建构模式 第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用。第二种架构模式两个单入口文件,分别生成两个应用定义define。。。函数可以定义配置文件。。。。
thinkphp 的两种建构模式 第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用. ...
- webpack4 单入口文件配置 多入口文件配置 以及常用的配置
单入口文件配置 webpack.config.js const path = require('path'); const HtmlWebpackPlugin = require('html-webp ...
- 设计模式-结构型模式, mvc 模型视图控制器模式(8)
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它 ...
- thinkPHP为什么设置一个单入口文件?
TP3.2的具体解释: ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个应用都有一个统一(但不一定是唯一)的入口. 应该说,所有应用都是从入口文件开始的,并且不同应用的入口文 ...
- QT MVC 模型/视图
1. 模型视图实例一, QFileSystemModel QTreeView ,model/view示例. #include <QApplication> #include <QF ...
- MVC(模型-视图-控制器)的理解
在 MVC 中,模型对象表示数据(例如日历应用程序中的待办事项或绘图程序中的图形),视图对象知道如何显示模型对象所表示的数据,控制器对象充当模型和视图的媒介.在“HelloWorld”应用程序中,模型 ...
- MVC 模型 视图, 控制器 写 三级联动
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- Qt MVC(模型-视图-代理)
实习刚才是一段时间,公司这边就要求熟悉这个mvc.一般开始都是用tableview,前面的blog我都是使用listview居多,并且相对delegate这个使用的多余model.接下来说下model ...
随机推荐
- Linux上安装JDK
1.下载rpm文件并安装 rpm -ivh jdk-7u51-linux-x64.rpm 2.修改/etc/profile文件,增加以下配置 export JAVA_HOME=/usr/java/jd ...
- ecshop的广告链接地址打开有问题修改affiche.php为普通链接
相信很多用过ECSHOP的站长都知道,ECSHOP的广告链接地址形式为“affiche.php?ad_id=1&uri=http%3A%2F%2Fwww.ecmoban.com” 它中间用 a ...
- c# post方式发送请求
public static bool CheckNew(string serverIP) { bool passed = false; try { string url = string.Format ...
- 如何在异步请求时设置RequestHeader
一.为何要用到setRequestHeader 通常在HTTP协议里,客户端像服务器取得某个网页的时候,必须发送一个HTTP协议的头文件,告诉服务器客户端要下载什么信息以及相关的参数.而 XMLHTT ...
- Effective Java2读书笔记-类和接口(二)
第15条:使可变性最小化 通过一个复数类来看不可变类. public final class Complex { private final double re; private final doub ...
- 使用SALT-API进入集成开发的简单样例
测试的时候,可以CURL -K,但真正作集成的时候,却是不可以的. 必须,不可以让TOKEN满天飞吧. 现在进入这个阶段了.写个样例先: import salt import salt.auth im ...
- idea
一. 常用快捷键 搜索class Ctrl+N 搜索文件 Ctrl+Alt+N 当前窗口查找/全工程查找 Ctrl+F/Ctrl+Shift+F,F3/Shift+F3前后移动 上/下一个位置 Ctr ...
- 初识lucene
lucene的介绍网上有好多,再写一遍可能有点多余了. 使用lucene之前,有一系列的疑问 为什么lucene就比数据库快? 倒排索引是什么,他是怎么做到的 lucene的数据结构是什么样的,cpu ...
- 通过java类文件识别JDK编译版本
类文件中第5,6,7,8四个字节是jDK版本号信息,其中5,6为小版本号:7,8为大版本号. 大版本号对应JDK版本如下: JDK版本号 7,8字节 JDK8 52(0x34) JDK7 51(0x3 ...
- libeXosip2(1-1) -- How-To initialize libeXosip2.
How-To initialize libeXosip2. The eXtented eXosip stack Initialize eXosip and prepare transport laye ...

,能够访问到index.php,这个时候index,php文件开始执行,打开这个文件我们跟着代码走
首先定义了一下环境常量,
项目目录常量为后面加载文件做准备,然后略过部分走到index.php的最下面
这里就开始真正的工作了开始引入系统核心文件。
这就是那个系统核心的路由类。
我们看到有一个叫做$RTR->class 类的属性,打印出来,我们看到了什么,
两个字符串,一个是welcome,一个是index,welcome就是默认要访问的控制器,index就是我们要访问的方法名称。好了,这个时候就真正开始启动了,这个时候先判断文件是否存在,如果存在就引入,不存在就404,然后 $c = new Controller();如图:
先把要访问的类加载,然后实例化一个,
然后再调用call_user_func_array这个函数,执行实例化对象的方法,就相当于 $welcome = new Welcome();