PHP开发框架关键技术分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 1 PHP开发框架关键技术分析   摘要:本文在分析主流Web架构的基础上,讨论了PHP开发框架涉及到的几种主要技术:MVC设计模式、模板解析引擎和数据访问层及其在PHP中实现的主流方式和优缺点,给出了基于被动MVC、模板解析技术和TableDataGateway模式的数据访问层来实现轻量级的PHP开发框架的解决方案。   关键词:MVC;模板解析引擎;数据访问层;PHP   中图分类号:TP311.52文献标识码:A文章编号:1007-9599(2012)20-0000-02   1引言   PHP是在服务器端执行的脚本语言,具有简单易用、执行效率高和跨平台性好等优点,是目前最受欢迎的Web开发语言之一。然而,由于PHP5之前的PHP版本对面向对象支持不完善,导致PHP的开发框架研究从PHP5发布后才逐渐展开、在发展过程中又受到Structs和ROR框架的严重影响,没有充分考虑PHP语言的特点,造成在PHP领域,框架的普及情况远远不如Java领域。PHP框架的研究首先要解决的是采用何种Web架构的问题:   2Web开发架构   简单的说,Web开发实际上是通过将HTTP请求发送给服务器端脚本,通过服务器端脚本对数据库进行数据管理。Web架构即是Web系统中服务器脚本以及HTTP请求的组织形式。目前流行的Web架构有以下三种:2.1基于文件/参数。传统的Web系统中,服务器脚本根据功能不同分别存储在不同的目录中。服务器脚本的路径与URL地址相对应。HTTP请求通过URL直接指向某个服务器脚本,并在URL后附上特定的参数,以提供脚本执行所需的数据。脚本article.php执行完毕后将执行结果响应给用户。这种是一种面向过程的开发方式,较为简单直接。在小型的Web系统中应用较广泛。但由于在URL中附加参数,因此基于文件/参数的方式不利于搜索引擎收录,同时各文件相对独立的处理HTTP请求,因此也难以实现系统的集中控制。2.2基于控制器/动作。随着面向对象的成熟,Web系统逐渐引入基于控制器/动作的开发方式。这种方式通常使用一个路由模块解析HTTP请求,并调用适当的控制器(或控制器中的某一个动作)对请求进行处理。MVC设计模式是基于控制器/动作的一种典型实现。与基于文件的方式一样,基于控制器/动作的架构也是建立在请求/响应驱动的基础上。2.3基于组件/事件。基于组件/时间的Web系统与桌面应用程序相似,通常将Web系统分为多个组件,各组件可以触发特定的事件并由事件处理器处理。这样就可以将HTTP请求抽象后映射到事件上。.NET是典型的基于组件/事件的Web框架。其代码重用能力很强,开发速度也很高。但这种方式往往要求完善的控件支持和强大的IDE开发环境。在缺乏这两个条件时,其优势难以发挥。   3PHP与MVC模式   3.1在PHP中实现MVC的特点。MVC模式通过分离数据、逻辑和显示,将Web系统中的数据处理、流程控制和数据展示强制性的分为模型、控制器和视图三大部分。三者通过控制器结合在一起。从而从根本上避免了传统的Web开发方式中存在的显示、逻辑和数据相互缠绕的问题,使得程序结构清晰而灵活[2]。MVC模式要求在跨页面的脚本中实现模型和控制器互相通信。然而由于PHP对象在页面执行完毕后即被回收,因此PHP对象无法跨页面存在,传统的MVC架构在PHP上无法完全实现。通常解决方案是在回收前将对象存入数据库或SESSION中,需要时在从数据库或SESSION中重建对象。这种方式由于需要频繁读写数据库,显然效率较为低下。基于PHP对象无法跨页面存在的现状,在PHP框架中使用被动MVC模式更为合理。在被动MVC中,模型以普通对象的形式存在,与MVC结构的其他部分没有关联。这样既可避免对象跨页面的问题,避免了MVC模式带来的效率下降。3.2视图层。Web项目扩大带来的众多问题中,前端设计团队与程序设计团队的协作、维护和扩展难度的控制是两大难点。分离页面设计与程序逻辑是最有效的解决方案[3]。在PHPWeb开发中,通常采用模板技术分离显示和逻辑。对应于MVC,模板解析引擎通常处于视图层。模板解析引擎提供相对简单的模板语言[4],以支持前端设计人员编写HTML模板。模板解析引擎可以讲HTML模板编译成PHP脚本后直接运行。总的来说,PHP框架的视图层通常采用类似Smarty的模板解析引擎驱动,以相对简洁的模板语言或直接采用PHP语言在模板中实现显示逻辑,从而实现业务逻辑和前端展示的分离。3.3数据访问层。开发框架要解决的另一个主要问题是在系统中将业务逻辑和数据相互分离。通常是使用数据访问层将程序与数据库分离。数据访问层一般采用数据关系映射(ORM)实现逻辑和数据的分离。ORM使用元数据描述对象和数据库之间的关系,并映

文档评论(0)

gmomo-lt + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档