admin 管理员组

文章数量: 887021


2024年1月13日发(作者:springboot连接mysql数据库)

S0FrWARE DEVEL0PMENT AND DESIGN 软件开发与设计 基于PHP的MVC框架核心技术研究与实现 罗维 (成都中医药大学医学信息工程学院,成都610083) 摘 要:MVC应用程序开发框架是MVC开发模式实现的基础。通过对MVC模式的深入研究,以PHP为基础,提 出了MVC的实际模型,设计了MVC框架的体系架构,解决了框架的路由模式,研制了控制器工厂、DAO组件与 模板引擎,形成了较为完整的MVC开发框架设计体系,为企业级应用系统开发提供了底层支撑系统。 关键词:MVC模式;MVC框架;路由模式;DAO组件;模板引擎 The Study and Realization of MVC Framework Core Technology of PHP LUO Wei (Conege of Medicine Information Engineering,Chengdu University of TCM,Chengdu 610083,China) Abstract:MVC application framework iS fundamental for tlle realization MVC design pattern.By the thorough study of the theory of MVC,this paper proposed a practical MVC model base on PHP language.The architecture of MVC framework was designed.The routing mode of framework was resolved.The controller factory,DAO component and template engine were developed.Finally a complete MVC framework development method was formed as well as provided supporting system for enterprise appfication system. Key words:MVC mode;MVC framework;Route mode;DAO Component;Template engine 1 引言 基于MVC模式的Web应用程序开发已成为主流。而 MVC模式要依赖于其宿主语言提供的MVC应用程序开发框架 才能实现IlJ。Java有Struts,Velocity等著名的框架,微软的 ASP.NET也内置了MVC开发框架[21。随着PHP面向对象编程 能力的成熟.基于LAMP平台的企业级应用系统向MVC开发 模式转型就成为可能。PHP如何实现MVC模式,就成为PHP 领域内重要的基础性研究课题.研究内容涉及MVC实际模 型、路由、控制器工厂、DAO组件及模板引擎等。此项研究 VC模式。通过对Struts等开源框架的分析与借鉴M1,结合PHP 自身的语言特征,设计了一种基于单一人口的实际模型,如 图2所示。 对于提高PHP在企业级应用软件开发中的规范性、可靠性与 可扩展性都有较大的促进作用。 2 MVC实际模型 MVC(Model、View、Controller)是指现代程序设计中一 种分层设计模式,将程序代码按其功能边界分为模型,视图 与控制器3部分,这是一种编程思维方式的改变,是程序代 图2 MVC实际模型图 码组织模式的发展方向。MVC模式明晰了整个程序中代码片 段的逻辑边界.使应用程序开发具有更好的可维护性与规范 性I3】。MVC模式的理论模型图如图1所示。 在此模型中,用户的所有请求都必需通过单一入口进入, 这是此模型的关键,通过单一入口,才能解决分发与控制器 动态实例化.也有利于对请求对象与响应对象的统一处理。 当请求分发到控制器,在由控制器对模型进行加载并推送给 相应的视图.最后生成响应对象。发送给用户。 3 MVC框架架构 基于MVC模式的应用程序开发.其宿主语言应有相应的 开发框架来支撑。对于PHP来说,要实现MVC模式,其框架 圈1 MVC理论模型图 MVC的理论模型展示了视图、控制器与模型三者间的逻 辑联系,而要在实际开发中使用MVC,还必须设计其实际模 作者简介:罗维(1972一),男,硕士,研究方向:开发框 架、设计模式、区域卫生、区域医疗协同信息系统。 型,并借助于MVC应用程序框架,才能真正在开发中运用M 收稿日期:2013—05—10 稿 

S0FrWARE DEVEL0PMENT AND DESIGN while(¥tablel一>fetch()){ 存标操作 ¥this一>view->lablel=Stablel->propertyl: ¥this->view->lable2=¥table2一>property2;∥把各表对象的属 f生值输出到表现层 } 在DAO中,根据对象关联关系,生成表对象池,通过对 对象池的递归操作,建立起表对象问的关联关系,为下一步 的处理做好准备。DAO组件还能完成XML的解析,可以直接 提供封装完整的XML 4.2.2 SQL生成 表对象的语法最终还是要通过DAO转换为对应的SQL. 一般情况,表对象生成SQL都是通过反射机制来处理的。高 效的SQL转换是整个DAO的技术核心,转换效率高低对系统 的性能有着直接的影响。在研制与优化DAO的SQL转换技术 方面.在3个方面改进了实现方式: (1)由类反射优化为对象反射。 (2)由逐次反射优化为缓存反射。 (3)由字符串拼接优化为数组拼接。 其中由逐次反射转为缓存反射是效率最好的一种优化算 法,大大提高了转换时间,使得框架的DAO对于整个系统的 运行速度不再有明显的影响。通过遍历关联表对象池,在运 行时刻递归处理主、从表对象,并在结果集回填时,同步移 动主、从表标游标,实现了面向对象版本的表对象关联操作。 4.2I3数据库兼容 本框架所实现的DA0能满足大多数管理信息系统对业务 数据持久化的需要,能高效地在对象与关系之间转换。对一 些特殊场景下,在DAO也无法构造出所需要的SQL时,框架 引入了直接查询功能.但仍把查询结果用对象的方式返回。 对于管理信息系统而言.业务的增、删、改还是主要的工作, 因此DAO能较好地满足统一开发的需要,对于复杂的查询。 则可用直接查询来实现,使整个系统在面向对象数据持久化 操作上更加灵活 4.3视图标签与编译 视图的作用在于将UI与内容提供分离。MVC的工作机制 是通过控制器,从模型获取数据,交给视图,按事先设计好 的格式显示。视图进一步把程序的业务逻辑边界进行了明晰 化。在研制视图引擎时发现,要实现视图,需解决3个关键 技术:一是标签体系:二是编译模式:三是静态化。 4.3.1标签体系 标签体系是视图实现的基础研。视图标签系统包含内容标 签与控制标签两大类。 内容标签相当于占位符,当获取到模型所提供的内容后, 视图引擎完成将标签替换为实际的内容.如<span class=‘ti— tie’><!~{¥ciIy}一></span>,经过视图引擎处理后,得到< span class=‘tilte’>成都</span>。在本框架的视图标签体系 中,笔者定义并实现了3种内容标签:字符标签、数组标签 与引用标签。其中引用标签用于视图嵌套,如包含公用视图 文件等,这样极大地提高了视图的结构化能力。 控制标签是完成一些必要逻辑处理的标签。在本框架体 软件开发与设计 系中,视图不承担业务逻辑的处理,仅承担显示逻辑的处理。 如根据上、下文条件显示警告信息等。笔者实现了两种控制 标签:迭代标签与分支标签。 迭代标签完成对数据集的显示,是标签中最为复杂的一 种,对于复杂数据集,框架可支持3级及以上的数据集迭代。 4.3.2编译模式 视图引擎在处理视图标签时,有两种方式:一是运行时 刻解释;二是生成编译文件。从效率上分析,生成编译文件 方式更优。第一次访问时,视图引擎自动对视图文件进行全 文扫描,对标签进行替代,生成该视图对应的编译文件,然 后执行此编译后的代码;第二次访问时.如果视图内容没有 改变,则直接执行编译文件,不需要对标签进行耗时的编译 处理。采用编译方式实现了本框架的视图引擎。引擎工作流 程如图5所示。 图5视图引擎工作流程 视图引擎类是MVC框架的核心类之一。现代应用系统对 UI要求越来越精细化的情况下。视图引擎的效率与稳定性就 非常关键。本框架中,视图引擎的核心方法是display方法, 在display方法中完成对不同内容标签的正则替换处理。对于 控制标签。笔者采用了模拟堆栈的算法。较好地解决了多重 迭代控制标签的替换问题。 4.3.3静态化 静态化是B,s模式应用系统提高访问性能最常用的方法。 在MVC框架中,可利用视图引擎实现静态化[81。静态化有两 种驱动方法:一是定时驱动;二是事件驱动。对于实时数据, 采用定时驱动算法完成静态化。考虑到静态化与动态读取的 性能平衡,对于实时变化频率太大的运用。可关闭静态化驱 动。对于非实时性数据,当模型发生状态变化或是进行持久 化操作时,由模型传递消息给视图引擎,由视图引擎模拟访 (下转第38页) 蚺 


本文标签: 视图 标签 引擎 框架 对象