什么是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 ...
随机推荐
-
Redis在游戏服务器中的应用
排行榜游戏服务器中涉及到很多排行信息,比如玩家等级排名.金钱排名.战斗力排名等.一般情况下仅需要取排名的前N名就可以了,这时可以利用数据库的排序功能,或者自己维护一个元素数量有限的top集合.但是有时 ...
-
JSON-LD
RDF RDF用于信息需要被应用程序处理而不是仅仅显示给人观看的场合.RDF提供了一种用于表达这一信息.并使其能在应用程序间交换而不丧失语义的通用框架.既然是通用框架,应用程序设计者可以利用现成的通用 ...
-
攻城狮在路上(肆)How tomcat works(一) 简单的web服务器
该节总共三个类:Request\Response\HttpServer---user.dir 该节的目的是实现简单web服务器对静态文件的访问.需要对请求头.请求体的格式有所了解,不然就没有 ...
-
post可以直接把get请求代入到目标url中
Feigong --非攻 非攻 取自<秦时明月>--非攻,针对不同情况*变化的武器 Feigong,针对各种情况*变化的mysql注入脚本 Feigong,In view of the ...
-
[Nmap] Regular script
out of date: TCP:nmap.exe -sC -sS -sV -p 1-65535 -A -v -v -oX filename.xml ip UDP:nmap.exe -sC -sU - ...
-
[c/c++] programming之路(27)、union共用体
共用体时刻只有一个变量,结构体变量同时并存 一.创建共用体的三种形式 #include<stdio.h> #include<stdlib.h> #include<stri ...
-
SQL Server 分析函数和排名函数
分析函数基于分组,计算分组内数据的聚合值,经常会和窗口函数OVER()一起使用,使用分析函数可以很方便地计算同比和环比,获得中位数,获得分组的最大值和最小值.分析函数和聚合函数不同,不需要GROUP ...
-
Oracle11g ADG环境实施文档-1204
Oracle11g adg 环境搭建实施手册-1204 2017年8月30日 9:16 11g adg 环境搭建实施手册-0824 2017年8月24日 10:18 ################# ...
-
关于 build tools
1.build tools是什么 Build Tools 即构建工具是一个把源代码生成可执行应用程序的过程自动化的程序(例如Android app生成apk).构建包括编译.连接跟把代码打包成可用的或 ...
-
Tomcat部署Web应用
在Tomcat中部署Web有三种方法: 1,可以将Web应用文件直接复制到webapps目录下,也可以将Web应用打成war包放到webapps目录下,tomcat会自动解开war包,并在webapp ...