资源描述
基于MVC设计模式的PHP快速开发框架研究与实现
摘要:计算机网络迅速发展,Web成为人们之间交流信息的一个关键平台,在网站上人们可以获得诸多最新资讯,还可以进行在线购物、在影音网站观看电影以及欣赏音乐等,可以在网上和朋友进行在线沟通;企业也对Web系统更加依赖,因而web系统的开发备受人们关注,而PHP在Web开发中占据着重要地位,然而目前PHP开发的模式没有结构化组织,把数据访问的代码、表示代码及其逻辑处理代码相互混合,出现了诸多弊端,无法适应Web发展的需求。本文对基于MVC设计模式的PHP实现—FDF框架进行研究,为PHP的开发提供了一个Web的应用程序框架,对Web应用程序进行了数据、控制及视图的分离,使Web应用程序实现松散耦合,促进了Web应用程序开发效率的提高,并使其可靠性、可扩展性、可维护性等特点得到增强。
关键词:MVC设计模式;PHP;开发框架
互联网、电子商务等发展迅猛,使得动态网站建设要求更高,在网站开发方式上传统的模式已经无法满足人们的需要,MVC模式对这个问题进行来了很好的解决[1]。MVC作为一种开发模式在解决大型Web项目问题上发挥了重要作用。PHP是一种专业的网站的开发语言,然而现有的PHP开发模式尚未有成熟、统一的规范,系统水平的高低取决于开发人员的专业素质及经验等,已经无法满足人们在开发效率、可扩展性、可靠性及可维护性等方面快速房展的需求[2]。因而把框架机制引入PHP的开发成为人们关注的重点。
一、 PHP语言的介绍
1.PHP语言的优点
PHP(超文本预处理器,Hypertext Preprocessor ),它是一种脚本编程语言,其语言风格和C语言类似[3],PHP具有以下优点:
(1)简单易用。PHP以C的语法为基础,并把Java、Perl和PHP自创的语法相结合,用C的模式进行书写,但是并没有收到C的限制,语法较为宽松
(2)具有跨平台性、可移植性。PHP可以为几乎全部的操作系统例如windows、unix及linux等,可移植性强,跨平台执行能力高。
(3)数据库支持广泛。PHP可以为诸多数据库例如MySQL 、Oracle、DB2、SOL Server、Access等提供支持,在实际应用过程中和PHP最为搭配的是MySQL。
(4)免费开源,应用较广。PHP和平常与它同时使用的MySQL、Apache、Linux等能进行免费开源,在软件开发上,利用LAMP进行开发的项目其投资成本比J2EE和.NET低很多,性价比较高,在IT界受到高度关注。
(5)具有较高的执行效率。PHP和其他解释性的语言相比,消耗的系统资源相对较少,PHP能够通过静态编译作为Apache服务器的单独模块俩运行,可以使服务器解释脚本的负担减轻,程序的执行效率提高。PHP和其他的外部扩展可以通过静态连编进行结合,使运行速度加快,使数据库的效能得到了充分发挥[4]。PHP还能把代码编译后再执行,从而把代码进行优化和加密,使运行速度和执行效率提高。
2.PHP语言的缺点
(1)数据库的支持不够统一。PHP的扩展接口全是由独立的团队去开发完成的,因此PHP虽然支持的数据库很多,但是每种数据库的操作接口是不同的。当把某一数据库的开发项目迁移到其他数据库时,几乎所有的数据库访问代码都需要进行修改。为了能够使应用在多个数据库环境中都可运行,需要研发人员使用不同的数据库接口编写进行同样的数据库操作程序,使开发人员的工作量大幅增加。
(2)命名规范不统一。PHP和Java不同,命名规范不统一。PHP开发中,conver_to_html、Converttohtml()及convertoHtml()这样的命名方式经常被同时使用,不利于项目的开发和维护[5]。
(3)在运行机制上PHP和Ruby、Java不同。PHP是对HTTP请求初始化全部资源,请求处理完毕需要释放全部资源。而Ruby、Java的垃圾回收机制只是在初次启动时初始化资源。因而PHP虽然不容易出现内存泄露,但增加了其添加跨请求的高级特性困难度。
(4)PHP开发框架不够成熟。PHP开发框架起步晚,Structs、ROR又对其影响较大,和PHP语言特点相分离。目前仍没有一个专门的优秀框架。框架的普及在PHP领域比不上Java领域。大部分PHP项目甚至没有任何框架。
PHP作为一种Web开发语言,目前很流行且具有诸多优点,但是也有很多缺点阻碍了PHP的进一步发展与应用。从框架层面上改进PHP的开发方式,对PHP的应用具有重要意义。
二、 MVC设计模式
1. MVC设计模式和它在Web中的应用
MVC(Model-View-Controller)把数据处理、数据表示及程序输入输出控制进行分离,对不同部分对象间的通信方式进行了描述,使其不受其它数据模型及其方法的影响,从而让程序结构更加清晰并具有灵活性[6]。MVC把应用程序的输入、输出、处理强行分离,MVC的应用程序分为模型、控制器及视图三个部件[7]。MVC组件的功能及关系如下图所示:
Web应用程序从传统意义上来说一般都是由ASP/PHP进行创建的。它们把数据层代码、HTML表示层代码混合,即便开发者经验丰富、水平较高,从表示层把数据分离也具有一定的困难[8]。MVC把它们从根本上进行了强制分离,虽然MVC的构造工作量变大,但仍就有诸多优点。其一,具有低耦合性。视图层、业务层分离,视图层代码更改不需要对模型、控制器代码进行修改。同样,改变业务流程或者规则只要对MVC的模型改动就可以,不需要更改视图层代码。模型和控制器、视图是分离的,因而应用程序的数据层及业务规则改变十分容易。其二,具有高重用性、可适用性。科学技术水平不断提高,访问应用程序的方式变得多种多样。同样一个服务器端的代码MVC模式可以让多种视图进行访问如Web浏览器等。模式只能够对数据未格式化的部分进行返回,因而为不同界面的使用提供了便利。其三,具有快速开发的能力,MVC模式可以让界面设计人员对表现形式更加关注,程序员对开发业务逻辑更加重视,使系统的前端、后端同时开发,使系统开发时间大为缩短。其四,具有可维护性。视图层、业务逻辑层进行分离,使得它们之间联系只能通过接口,任何部分内部都不会对其他部分产生影响,从而使Web应用具有可维护性。其五,为软件工程化管理提供了便利。不同层可各司其职,一个层面的应用不同但也有某些相同特征,为软件工程化管理提供了便利。
2. MVC设计模式的PHP实现
PHP对象在服务器端不能跨页面存在,所有PHP实际上是没有办法实现传统的MVC架构的,其问题主要在模型上得到体现,如在Java中,数据模型是独立的,不同于业务逻辑、表现逻辑等,它可以在服务器端跨页面存在,JavaBean 就是在这个方面发挥作用[9]。PHP进程在内存中不能长期存在,只能在PHP页面刚刚执行时创建,页面执行结束,则该以免已经结束,基础这种庆康,模型不能进行直接实现。
因PHP语言跨页面无法存在,PHP开发框架中使用被动MVC更为适合。在被动MVC模式上,模型身处MVC结构下却不知。也就是说模型是一个普通的对象,和MVC中的其他部分是没有关联的。这样的话,模型就不用再跨页面存在,改变了使用MVC导致的效率低下现象。
被动MVC模式和传统意义上的主动MVC模式不同,模型是一个简单的独立的对象,因而自身的改变不能传达给视图;视图也无法对模型的更新作出订阅及监视等。视图只能够对控制器传送的数据进行使用或者在得到控制器通知之后再去模型进行最新数据的提取。所以被动MVC模式下,控制器还要把模型更新之后的数据传送给视图,因而在设计上相较于主动MVC更加困难。
三、基于MVC设计模式的PHP快速开发框架研究与实现
1.框架入口设计
传统的Web应用程序中,一般是以页面或者文件为基础的,接入模式一般采取多点接入。这种接入模式可以让用户对系统的文件进行直接访问,并且这些文件可以对用户的请求进行处理并把这些处理的结果反应给用户[10]。一个系统请求入口就有很多。这种接入方式给用户显示的接口非常多,容易带来安全隐患,对全局的处理、优化等起了不利影响。
单点接入模式把Web应用应用程序的全部请求都集中到一个脚本文件即所有的HTTP请求都由入口文件统一进行接受。用户和系统进行交互的入口只有这一个。这种接入模式具有许多优点,其一,方便全局处理,如对数据进行安全监测等。其二,可以使程序结构更加清晰,方便进行管理。入口进行集中控制,程序人员只需要负责开发自己的模块就可以,们不需要对程序运行进行协调。其三,保证安全,采用单点入口模式,有些模块可以对用户进行屏蔽,模块的物理位置用户难以识别,保证了系统的安全性。另外,单点接入也使系统的一些耦合缺陷不对用户进行开放。
2. 控制器设计
控制器主要负责对用户的请求进行接收,并对模型进行更新,再把合适的视图给用户返回。控制器对模型层和视图层具有分离作用,这种方式有利于在同一个模型的基础上进行视图的开发[11]。控制器设计被框架一分为二,分别是前端控制器、动作控制器。前端控制器对用户的请求作出分析,并把这些用户请求转发给相应的动作控制器来进行处理。动作控制器负责调用适当的模型来生成数据以便视图使用。
框架的唯一入口是前端控制器(index.php),对Apaache服务器的rewrite引擎进行配置可以使所有页面的请求都传送到前端控制器,以此集中控制框架。因而,除了对用户的请求进行分析转发之为,前端控制器具有authorization、logging、validation等功能。关键代码如下:
…
$action = $bd->make (‘ev’,$bd)->get(HH);// 获取页面参数
If(!$action)$action =’index’;// 默认控制器
If(file_exists(CA.$dir.$action.’.action.pop’)) {//检查控制器是否存在
If($action != ‘index’)include CA.$dir.$action.’.action.php’;// 加载动作控制器
return new $action($bd);// 返回动作控制器实例}
…
动作控制器作为一个适配器,把客户请求和业务逻辑分开,动作控制器是由action.php文件来实现的,动作控制器全部由抽象类的ActionControllerBase派生而来,把数据传送给视图的抽象方法是display。
Abstract class ActionControllerBase{
public $bd;
public $lang;
Public function _construct(&$bd){
//…
}
// …
Abstract function display();
}
3. 数据操作
PHP支持的数据库众多,但是接口支持不具有统一性。在数据库操作抽象层,框架把PHP Data object为基础,使程序代码可移植性得到增强。PDO为多数关系数据库API的通用功能提供一致的API,为PHP程序的开发提供了便利[12]。
框架对经常用到的数据库操作如DELETE,SELECT,UP-DATE,INSERT等简单封装,简化了数据库操作,开发者不需要使用SQL语句的相关语法,只需要以自己的数据库表、所需操作的数据库字段为参考。开发者更多的精力用在业务逻辑上,不再考虑SQL的语法。进行简单封装还降低的程序的书写错误,降低了调试出错概率。
4. 视图技术
采用模板技术把PHP代码、HTML代码分离是视图的关键。在模板文件中把需动态显示的内容转化成某种形式的变量,视图层处理完显示逻辑后再由模板解析引擎接收数据,替换模板变量生成最终的用户视图。URL请求由Web服务器接收之后,首先需要确认的是是不是第一次对URL进行请求。是则对模板接口进行调用,然后再由模板解析引起对该URL所需要的模板、代码等进行编译,最后用户视图生成、输出;不是则在已具有的用户视图上进行直接定位。这种情况虽然第一次编译的成本相对较高,但是为其他的访问请求节省了许多解析以及读取的时间。框架能够把页面生成静态缓存即页面缓存技术,加快了程序的运行速度,提高了效率。
结语:
社会不断进步,互联网在全球范围内普及,网络应用开发技术发展迅猛,Web应用在人们的生活、工作中产生了较大的影响,许多的信息、数据库系统等逐渐转移到互联网。人们日常生活和Web应用紧密相关。但目前Web应用程序的开发已经不能适应Web应用增强的需求,为了提高Web应用程序的开发效率,并促使其可靠性、可扩展性、可维护性的提高,Webk应用程序开发员引入了框架,提高了应用程序开发的质量和效率。本文基于MVC设计模式对PHP快速开发框架进行分析研究,提出了MVC设计模式的PHP实现即FDF框架,FDF框架把用户界面、业务逻辑进行强制分离,使系统开发设计框架更加清晰并为其提供了实现方法。较之传统开发方式Web应用系统由FDF框架进行开发,可以把模块的功能在局部范围内得到限制,从而使系统性能、代码复用率等得到提高,使Web系统的安全性和开发效率得到进一步提高。
参考文献:
[1]张志瑜.论述PHP实现MVC框架[J].科技视界,2016,(13):218-219.
[2]崔伟.基于 MVC 模式的 PHP 开发框架研究[J].中小企业管理与科技,2013,(7):242.
[3]梁广浩.搭建框架快速开发微信公众平台功能[J].大众科技,2015,(10):134-137,155.
[4]刘倍雄,徐完平.基于MVC模式的轻量级PHP框架的设计与实现[J].网络导报·在线教育,2012,(32):134-135.
[5]高洋.基于PHP的知识产权信息管理系统[D].西安电子科技大学,2014.
[6]滕文.基于MVC模式的PHP程序开发[J].科技视界,2012,(28):262.
[7]吕智强.基于MVC模式的PHP框架设计[J].科技视界,2013,(24):65-66.
[8]罗维.基于PHP的MVC框架核心技术研究与实现[J].电脑编程技巧与维护,2013,(16):25-27,38.
[9]刘立芳.基于MVC模式与插件式设计的开发架构的探讨与实践[J].电脑编程技巧与维护,2012,(12):33-35.
[10]王俊芳,李隐峰,王池等.基于MVC模式的ThinkPHP框架研究[J].电子科技,2014,27(4):151-153,158.
[11]胥立,崔伟,黄林等.PHP开发框架关键技术分析[J].计算机光盘软件与应用,2012,(20):229-230.
[12]孟佟.PHP开发框架的关键技术研究[J].通讯世界,2015,(15):216-216.
展开阅读全文