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,单入口文件的框架,这样能够让大家更清楚的理解这个东西。

时间: 2024-10-24 21:50:43

MVC 模型、视图、控制及其单入口文件的mvc的工作原理的相关文章

MVC(模型---视图---控制器)

MVC(模型-视图-控制器)模式,它强制性的使用应用程序输入.处理和输出分开. M(model)是数据模型,v(view)即视图,是指用户界面,C(controller)则是控制器. 模型.视图.控制器的分离,使得一个模型可以有多种视图.如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都反映出这些变化.因此,无论何时发生了何种数据变化,控制器都会将变化通知给所有的视图,导致数据的更新.这就是一种模型的变化的传播机制. 三者的关系图如下: Event(事件)导致Contr

设计模式, mvc 模型视图控制器模式(8)

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它也可以带有逻辑,在数据变化时更新控制器. View(视图) - 视图代表模型包含的数据的可视化. Controller(控制器) - 控制器作用于模型和视图上.它控制数据流向模型对象,并在数据变化时更新视图.它使视图与模型分离开. quotes = ('A man is not complete u

thinkPHP为什么设置一个单入口文件?

TP3.2的具体解释: ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个应用都有一个统一(但不一定是唯一)的入口. 应该说,所有应用都是从入口文件开始的,并且不同应用的入口文件是类似的. 入口文件定义 入口文件主要完成: 定义框架路径.项目路径(可选) 定义调试模式和应用模式(可选) 定义系统相关常量(可选) 载入框架入口文件(必须) 自己理解: 一般情况下TP访问一般都是,域名/模块/控制器/方法       访问的, 1.有利于维护前台和后台 2.有利于维护,方便调

php对象:__autoload()函数及单入口文件,__set(), __get(), get_class_methods(),get_class_vars()

__autoload():当类中找不到相关类的时候,会自动执行__autoload()函数,可以自动加载相关文件 __set() : 当对类的私有变量进行调用赋值时,自动调用该方法. __get() : 在外部获得类的私有属性时,自动调用该方法. get_class_methods(): 获取类的方法 get_class_vars(): 获取类的属性 传入类名,返回数组 私有变量外部能不能访问 来自为知笔记(Wiz)

学习模型-视图-控制器MVC模式

MVC简介: MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心(比如数据库记录列表). View(视图)显示数据(数据库记录). Controller(控制器)处理输入(写入数据库记录). MVC 模式同时提供了对 HTML.

一个整体框架的结构分割,另外通过入口文件对include_path和面向对象的机制有了新的认识

1.实现框架需要考虑的公共的方法: mysqldb.文件上传.图片处理和验证码.session.字符串处理等等的处理是每一个框架都需要协调处理 2.一个完整的项目过程: (1)完整主机[配置host指向文件的路径,实现虚拟域名的正常访问][这一点不需要再做]mvcproject项目 (2)提取框架[主体项目分为框架(公共代码framework)和具体业务逻辑实现(app)] 在app目录下实现MVC的文件夹[一一进行对应],在framework中放置公共的方法 [在配置文件上实现对这些访问路径的

JAVA之旅(二十五)——文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine

JAVA之旅(二十五)--文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine 我们继续IO上个篇幅讲 一.文本复制 读写都说了,我们来看下其他的操作,我们首先来看复制 复制原理:其实就是将C盘下的文件数据存储到D盘的一个文件中 实现的步骤: 1.在D盘创建一个文件,用于存储文件中的数据 2.定义读取流和文件关联 3.通过不断的读写完成数据的存储 关闭资源 package com.lgl.hel

php源码建博客2--实现单入口MVC结构

主要: MVC目录结构 数据库工具类制作 创建公共模型类和公共控制器类 --------------文件结构:-------------------------------------- blog├─index.php  入口文件├─Model 模型│  └─UserModel.class.php 用户模型类├─View 视图│  └─login.html  登录表单页面├─Controller 控制器│  └─UserController.class.php 用户控制器├─Frame 公共使用

[框架模式]经典的模型视图控制器模式MVC

参考:<设计模式> http://blog.csdn.net/u010168160/article/details/43150049 百度百科 引言: Model(模型)是应用程序中用于处理应用程序数据逻辑的部分. 通常模型对象负责在数据库中存取数据. View(视图)是应用程序中处理数据显示的部分. 通常视图是依据模型数据创建的. Controller(控制器)是应用程序中处理用户交互的部分. 通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据. MVC 分层有助于管理复杂的应用程