山东科技大学学士学位论文1摘要随着Web的发展和功能的需要,动态网页的开发变得越来越复杂,工程也变得越来越庞大,原有的嵌套和面向过程的开发已经无法应付。MVC就是一个专门针对解决大型Web项目的开发模式。PHP作为一种简单易用的开发语言,它的第五版对ObjectOriented思想加入了完全的支持,使用MVC模式,PHP就能完成复杂的Web应用的开发。是否采用MVC,如何使用MVC,一个最根本的原则是不要为了使用而使用。本文首先介绍了PHP语言的特点和开发流程的发展,然后简明扼要的阐述了MVC思想,最后以制作个人的Blog为例说明如何利用MVC思想进行PHP开发,并对其中的一些技术细节和难点做出了说明。关键词:MVC,PHP,设计模式,BlogTheDiscussiononMVCPatterninWebApplicationProgrammingAbstract:WiththeWebapplicationgrowingmorecomplexandhuge,theoriginaldevelopingwaycannotmeettherequirements.MVCisasolutiontolargeWebproject.PHP5fullysupportsObjectOrientedprogramming,andmadeitavailabletouseMVCpatterninPHPprogramming.IsitnecessarytouseMVCorHowtouseMVC,aprincipletodecidethisisnottouseitjustforuse.Thisarticlecanbedividedintothreeparts;thefirstpartwillintroducethefeatureofPHPanditsdevelopmentinprogramming.AndthenstatestheessentialofMVCpattern.Atlast,IwillexplainhowtouseMVCbymakingaBlogandmakeanexplanationtosometechnicaldetails.Keywords:MVC,PHP,Designpattern,Blog山东科技大学学士学位论文1目录1引言.................................................................................................................12PHP介绍与Web开发流程的发展...................................................................22.1PHP语言概述.......................................................................................................22.2传统的PHP嵌入式开发......................................................................................22.3简单的解析模板的应用......................................................................................32.4Smarty模板技术.................................................................................................43MVC思想...........................................................................................................73.1简介......................................................................................................................73.2MVC设计思路.......................................................................................................73.3MVC在PHP中的实现...........................................................................................93.4三层开发体系结构与MVC的比较....................................................................123.5常见的MVC模式实践........................................................................................133.6MVC开发流程.....................................................................................................143.7在实际开发过程中的感想................................................................................154用PHP和MVC思想开发一个Blog的实践..................................................174.1功能的确定........................................................................................................174.2数据表的设计....................................................................................................174.3程序结构............................................................................................................195结束语.............................................................................................................22山东科技大学学士学位论文11引言随着Web2.0的兴起,Web应用在Internet中也愈显得重要。Flash技术不断发展,以及JavaScript等各种老技术的新应用,逐渐弥补着Web应用与桌面应用相比交互上的不足。但由于Web本身和相关一些技术的原因,例如Http的瞬时性和无状态性,与传统的桌面编程有着很大的差别,所以在开发过程中也面临着许多新问题,比如仅仅是HTML与代码的分离就有很多讨论与解决方案。同时各种设计模式也在Web开发中得到了新的应用。其中ObjectOriented思想和MVC设计模式无疑是最经典也是最常用的,它们极大地增加了代码的重要性,缩短了开发周期,特别是在中型和大型项目上,优势更加明显。PHP作为一种开源的脚本语言,它的易用性使其成为快速开发Web项目的首选。与此同时,PHP5.0对面向对象的支持更加完善,增强了其在企业级别的应用,使ObjectOriented思想和MVC设计模式更有效地得到发挥。本文后半部分就以PHP语言开发一个单用户Blog来简要的阐述一下MVC思想和开发的具体过程。浅析MVC模式在Web开发中的应用22PHP介绍与Web开发流程的发展2.1PHP语言概述PHP是HypertextPreprocessor的简称,是一种HTML内嵌式编程语言。它的语法混合了C、Java和Perl优点及它的新语法,比CGI、ASP或者Perl更快速地执行动态网页。总的来说,它有以下几个方面的优点:(1)支持的数据库非常广泛,大到SYBASE、MySQL、ORACLE,小到Access都支持。(2)跨平台性非常好,支持Windows系列操作系统,LINUX操作系统和UNIX操作系统。同时支持多种Web服务器。(3)开源软件,升级更新速度非常快。(4)免费软件,无须花钱购买。同时与Linux、Apache、MySQL构成性价比最高的Web系统。(5)PHP5.0有成熟的面向对象体系,能够适应基本的面向对象要求,适合开发大型项目。2.2传统的PHP嵌入式开发最早的PHP语言是纯粹的过程化的,通过界定符与HTML区别并与HTML嵌套,实现动态的数据处理。一个典型的代码例子如下:HTMLHEADTITLEMyPage/TITLE/HEADBODYHello,?PHPecho”Michael”;?,Welcometomysite!/BODY山东科技大学学士学位论文3/HTML其中,?PHP与?是PHP的界定符,它们之间的代码即为PHP代码,可以动态的返回需要的数据。同时也可以与数据库连接实现数据库的操作。在Internet早期一个HTML文件的体积并不是很大,业务逻辑也相对简单,这种情况下,echo一行行的HTML代码还相当容易。但随着网络的提速,HTML文件的体积暴增,业务逻辑也越来越复杂。这时逻辑代码与表现代码的嵌套在实际中就显得相当困难。比如仅仅是一些下拉选择框初始值的确定,就需要大量代码来实现。此时,数据层、逻辑层、表现层的概念还没有一个界定和区别,完全是混合在一起的。随着对程序代码与HTML分离的迫切要求,“模板”技术应运产生。2.3简单的解析模板的应用“模板”技术实际上是结合了HTML和脚本语言特征的一种表达方式,逻辑层和表现层依靠它联系。它基本上单纯的实现了PHP代码与HTML代码的分离,使得美工和程序员之间的矛盾得到了极大的缓解。大约在98年PHP3的时代,FastTemplate的诞生使其成为此类模板技术的典型代表。代码例子如下:模板文件:HTMLHEADTITLE{title}/TITLE/HEADBODY{greetings}/BODY浅析MVC模式在Web开发中的应用4/HTMLPHP代码:?PHP$ft=newFasttemplate;//实例化模板类……$ft-Parse(array(“title”=”Hello”,”greetings”=”Welcometomysite!”));//对模板变量赋值……?〉上述例子模板文件中的{title}{greetings}看作是一个标记,可以被替换成不同的值。PHP代码中,通过Fasttemplate对{title}{greetings}动态赋值,这些标记分别被”Hello”和“Welcometomysite!”替换,从而实现了程序代码与HTML代码的分离。与此类似的一些模板技术原理都是将模板读入内存,然后调用parse()函数,用数据对预置的标记进行替换。此时应用程序的逻辑层和表现层虽然能够被清晰的界定,但表现层仅仅是一个标记的匹配和替换,大量的页面上的布局和判断仍然需要在PHP中处理和确定,所以程序员还需要处理一些显示上的问题。可以说这是一种不彻底的分离。2.4Smarty模板技术