php关键技术,PHP开发框架关键技术分析

2012年第20期 Computer CD Software and Applications 软件设计开发

— 229 —PHP开发框架关键技术分析 胥立1,崔伟2,黄林1

(1.西北农林科技大学信息工程学院,陕西杨凌 712100;2.泸州职业技术学院信息工程系,四

川泸州 646005)

摘要:本文在分析主流Web架构的基础上,讨论了PHP开发框架涉及到的几种主要技术:MVC设计模式、模板解析引擎和数据访问层及其在PHP中实现的主流方式和优缺点,给出了基于被动MVC、模板解析技术和Table Data Gateway 模式的数据访问层来实现轻量级的PHP开发框架的解决方案。

关键词:MVC;模板解析引擎;数据访问层;PHP

中图分类号:TP311.52文献标识码:A文章编号:1007-9599 (2012) 20-0229-02

1 引言

PHP是在服务器端执行的脚本语言,具有简单易用、执行效率高和跨平台性好等优点,是目前最受欢迎的Web 开发语言之一。然而,由于PHP5之前的PHP版本对面向对象支持不完善,导致PHP的开发框架研究从PHP5发布后才逐渐展开、在发展过程中又受到Structs和ROR框架的严重影响,没有充分考虑PHP语言的特点,造成在PHP 领域,框架的普及情况远远不如Java领域。PHP框架的研究首先要解决的是采用何种Web架构的问题:

2 Web开发架构

简单的说,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开发环境。在缺乏这两个条件时,其优势难以发挥。

3 PHP与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]。在PHP Web开发中,通常采用模板技术分离显示和逻辑。对应于MVC,模板解析引擎通常处于视图层。模板解析引擎提供相对简单的模板语言[4],以支持前端设计人员编写HTML模板。模板解析引擎可以讲HTML模板编译成PHP脚本后直接运行。总的来说,PHP框架的视图层通常采用类似Smarty的模板解析引擎驱动,以相对简洁的模板语言或直接采用PHP语言在模板中实现显示逻辑,从而实现业务逻辑和前端展示的分离。3.3 数据访问层。开发框架要解决的另一个主要问题是在系统中将业务逻辑和数据相互分离。通常是使用数据访问层将程序与数据库分离。数据访问层一般采用数据关系映射(ORM)实现逻辑和数据的分离。ORM使用元数据描述对象和数据库之间的关系,并映射到数据库中[5]。由于程序对象和关系数据库的映射较为复杂,因此会造成比较严重的效率降低。从PHP5开始,ORM逐渐被引入到PHP开发框架的设计中。但现有的PHP ORM项目虽然都基本实现了对象关系映射,却普遍存在结构复杂、效率低下的缺陷。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值