background image

PHP 开发框架关键技术分析

 

 摘要:本文在分析主流 Web 架构的基础上,讨论了 PHP 开发框架涉及到的几种主要技

术:

MVC 设计模式、模板解析引擎和数据访问层及其在 PHP 中实现的主流方式和优缺点,

给出了基于被动

MVC、模板解析技术和 Table Data Gateway 模式的数据访问层来实现轻量级

PHP 开发框架的解决方案。 

  关键词:

MVC;模板解析引擎;数据访问层;PHP 

  

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 项目扩大带来的众多问题中,前端设计团队与程序设计团队的协作、维护和扩展难