MVC是一个老生常谈的问题,是为了解决一类共同问题总结出来的一套可复用的解决方案,这是软件设计模式产生的初衷 。不管是客户端还是移动端,MVC的分层设计模式解决了软件开发中的可复用、单一职责、解耦的问题,php语言中的MVC设置模式也是如此 。下面通过PHP语言细说MVC模式如何在PHP中应用,本文主要从如下几方面介绍:
Ø MVC的工作原理
Ø PHP开发框架
a) 开发框架的优势
b) 使用框架进行模块划分
Ø 一个简单MVC框架总体架构分析
a) URL访问方式【URL Parser】
b) 控制器【Controller】
c) 视图【View】
d) 运行时【Runtime】
1、MVC 的工作原理
MVC框架图:
视图View
代表用户交互的页面、可以包含html界面、Smarty模板等和界面相关的元素 。MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的点击、拖动等事件的处理,而不包括在视图上的业务流程处理 。业务流程会交给模型层(Model)处理 。
模型Model
模型层是对业务流程、状态的处理以及业务规则的指定 。业务流程的处理过程对其他层来说是黑箱操作,模型接受视图的请求处理数据,返回最终的处理结果 。业务模型还有一个很重要的模型--数据模型,数据模型主要指实体对象的数据保存(持久化) 。比如将一张订单保存到数据库,从数据库获取订单,所有和数据库相关的操作限定在该模型中 。
控制器Controller
控制层是View层和Model层之间的一个桥梁,接收到用户的请求,将模型和视图匹配在一起,共同完成用户的请求 。比如,用户点击一个链接,控制层接收到请求后,把信息传递给模型层,模型层处理完成之后返回视图给用户 。
2、PHP开发框架
2.1、开发框架的优势
- 框架提高开发效率和质量
- 框架处理了许多基础性工作
- 框架处理细节工作(事务处理、安全、数据流控制)
- 框架结构性好、扩张性好
- 框架划分子问题,易于控制、易于延展、易于分配资源
一个典型的后台应用模块的划分
- 平台操作管理
- 登录管理
- 操作界面管理
- 系统管理频道
- 常规管理
- 公告管理
- 友情链接挂你
- 内容管理频道
- 图片管理
- 栏目管理
- 文章管理
- 幻灯片管理
- 用户管理频道
- 用户组管理
- 用户管理
- 每个模块可以设置查看、添加、修改、删除、搜索等操作
- 模块太大应该划分子模块,适合的模块数量为8~12个
3、一个简单MVC框架的分析
从以下五个方面来分析
- URL访问方式(URL Parser)
- 控制器(Controller)
- 视图(View)
- 模型(Model)
- 运行时(Runtime)
URL使用PATHINFO模式(index.php/index/index/),应用的访问方式都是采用单一入口的访问方式,所有访问一个应用中的具体模块及模块中的某个操作,都需要在URL中通过入口文件后的参数来访问和执行,所有访问都会变成由URL的参数来统一解析和调度,格式如下:
不带参数的URL
http://example.com/index.php/user/add
带有参数的URL
http://example.com/index.php/user/add/cid/5
http://example.com/index.php/user/add/cid/5/page/6
这种采用单一入口和PATHINFO模式的URL访问是MVC实现的基础,作为单一入口的框架的入口brophp.php文件则负责处理基本的信息,包括了
- 路径信息:BroPHP框架的路径,用户项目的应用路径,项目的根路径等
- 包含框架中的函数库文件
- 包含全局的函数库文件,用户可以自己定义函数在这个文件中
- __autoload()自动加载类
- 页面缓存配置
- 初使化时,创建项目的目录结构
- 解析处理URL
路径信息会保存在$GLOBALS全局数组中,后面的页面需要使用到直接从$GLOBALS中获取即可
//模板文件中所有要的路径,htmlcssJAVAscriptimagelink等中用到的路径,从WEB服务器的文档根开始
$spath = dirname($_SERVER["SCRIPT_NAME"]);
if ($spath == "/" || $spath == "\")
$spath = "";
$GLOBALS["root"] = $spath . '/'; //Web服务器根到项目的根
$GLOBALS["App"] = $_SERVER["SCRIPT_NAME"] . '/'; //当前应用脚本文件
推荐阅读
- win7提示explorer.exe应用程序错误的解决方法
- 新买的Mac电脑如何设置更好用
- Mac小技巧|小技能有大作用
- 涌泉穴位位置图和作用 涌泉穴正确的按摩方法
- 浙江松阳启用茶叶质量IC卡 力求以质兴茶
- 原地热车究竟有啥作用?不少老司机都搞不明白,看看维修师傅怎么说?
- 汽车上的转速表究竟有什么用?我们开车时如何利用转速表?
- 汽车内外循环该怎样使用?
- 汽车上用的铅酸蓄电池,“铅”和“酸”是如何反应产生电能的?
- 暖脚宝可以在被窝用吗,暖脚宝可不可以睡觉用