FleaPHP 开发指南 - 2. FleaPHP 中的 MVC 模式

星辰陪我去流浪

星辰陪我去流浪

2016-02-19 18:41

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享FleaPHP 开发指南 - 2. FleaPHP 中的 MVC 模式,希望可以对大家能有小小的帮助。

理解 FleaPHP 中,MVC 模式是如何实现的,以及其特点,可以帮助你更好的运用 FleaPHP。

--------------------------------------------------------------------------------

什么叫做设计模式?
简单来说,设计模式(Pattern)就是解决某一类问题的特定方法。由于这种特定方法在解决同类问题时具有通用性,所以我们就可以一次又一次的利用已有的经验。具体到程序编写上,就是我们可以用类似的程序结构和代码解决同类型的问题。有关设计模式的详细内容,可以阅读经典著作《设计模式》,这里我就不班门弄斧了。

MVC 实际上是一系列略有不同的模式。FleaPHP 采用的是Passive(被动)MVC 模式。

在 Passive MVC 模式中,Model(模型)完全不知道自己身处于 MVC 结构之中。换句话说,Model 就是一个普通的对象,与 MVC 模式里面的其他组成部分完全没有关联。具体而言,MVC 模式涉及到下列三类对象:

M 代表 Model,即模型,用于封装与业务逻辑有关的代码和数据。例如对订单的各种计算。
V 代表 View,即视图,用于呈现内容给用户(也就是将程序运行的结果返回给浏览器显示)。例如商品列表页面、后台登录页面。
C 代表 Controller,即控制器,用于接收用户输入(通过浏览器发起的请求),然后调用模型(Model)对输入数据进行处理并获得处理结果。最后将结果传递到视图(View),从而让用户能够看到自己操作的结果。例如用户点击删除文章按钮后,控制器调用操作文章的模型,删除掉指定文章,最后通过视图显示成功删除文章的提示信息。
经过这样简单的分离,我们就把应用程序操作数据的代码(绝大部分 Web 应用程序都是对数据进行操作)和处理用户输入输出的代码分离开来了。

这种分离有许多好处:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

清晰的将应用程序分隔为独立的部分;
业务逻辑代码能够很方便的在多处重复使用;
方便开发人员分工协作;
如果需要,可以方便开发人员对应用程序各个部分的代码进行测试。
如果你上面的文字让你觉得很无聊或者不够严谨,那么说明你已经很熟悉 MVC 模式了。如果你看到上面的文字感到无所适从,那说明你还需要多阅读一些面向对象相关的书籍和文档。

--------------------------------------------------------------------------------

应用程序执行流程
下面的插图描述了基于 FleaPHP 应用程序的执行流程。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

index.php 是应用程序的入口文件,负责定义一些应用程序必须的常量,并载入 FleaPHP 框架,然后执行 run() 函数;
过滤器链完成 HTTP 请求数据解析、MagicQuotes 处理等工作;
应用程序控制根据 HTTP 请求,调用领域逻辑、表数据入口、组件等,并将处理结果传送到视图/模板;
视图/模板根据应用程序控制器提供的数据生成输出内容并传送到浏览器。
在 FleaPHP 中,index.php 里面的 run() 在调用过滤器链后,会运行一个调度器。该调度器根据 HTTP 请求参数决定要调用的应用程序控制器。例如 index.php?controller=blog&action=list 这个请求表示要调用名为 blog 的应用程序控制器的 list 动作。然后调度器会调用这个控制器的动作。

在 FleaPHP 应用程序中,控制器实现为一个类,控制器动作就是该类的一个方法。

在控制器(MVC 模式中的 Controller)方法中,通过调用领域逻辑代码(MVC 模式中的 Model)来处理 HTTP 请求提交的数据并获得结果。然后再将结果传递给视图(MVC 模式中的 View)。视图根据控制器方法提供的参数从模板文件构造最终的页面内容,并返回给浏览器。

展开更多 50%)
分享

猜你喜欢

FleaPHP 开发指南 - 2. FleaPHP 中的 MVC 模式

编程语言 网络编程
FleaPHP 开发指南 - 2. FleaPHP 中的 MVC 模式

Struts开发指南之MVC架构

编程语言 网络编程
Struts开发指南之MVC架构

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

AJAX.NET用户开发指南(2)

Web开发
AJAX.NET用户开发指南(2)

Java 2中的MVC设计模式

编程语言 网络编程
Java 2中的MVC设计模式

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

mvc模式分离javascript开发

Web开发
mvc模式分离javascript开发

Struts开发指南之Taglib

编程语言 网络编程
Struts开发指南之Taglib

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

个人首页制作诀窍

个人首页制作诀窍

我是公主、你所爱恋的公主

我是公主、你所爱恋的公主
下拉加载更多内容 ↓