开始之前
这篇教程用于 Web 应用程序开发人员从表示逻辑中分离数据和业务逻辑。一般来说,要求读者具备 PHP 经验、XML 知识并且熟悉 XSLT 。
许多 Web 应用程序接收用户数据,将其转换为数据库中存储的表,然后再把这些数据库中的数据转换为 Web 页面。要使用数据创建 Web 页面,一种方法是创建一个 PHP 页面作为 Web 页面的模板,其中包含所有的数据库查询和其他必须的逻辑,这些逻辑将数据重构到页面可用的表单中。但是,这种方法的问题是将所有关注点混合在一起:
- 第一个关注点是 Web 页面设计人员,创建页面的布局
- 另一个关注点是从数据库中提取数据的开发人员
- 第三个关注点是重构数据的中间人员,使数据在页面中更容易使用
关注点分离指把代码提取到不同的层:
- 处理数据库层
- 操作数据层
- 创建用户界面的表示层
这篇教程将展示关注点分离的两个实现。
关注点分离是实现具有良好结构的代码的基础,它封装了责任和依赖关系。为此,多年以来,开发人员设计了许多战略和框架以促进甚至执行业务逻辑和表示逻辑的分离,这两种逻辑通常是各自独立的。 XSLT 样式表序列使分离非常清晰,因为可以将数据转换过程进行分解,从持久化形式转换为可视化表示的过程可分为几个独立的阶段,通过一个样式表转换 XML,然后再使用下一个样式表操作。然而,大多数使用过程语言的程序员并不是以 XSLT 语法和方法、声明范例作为标准的。 PHP 中的 SimpleXML 模块是对 XSLT 的过程响应,可以将 XML 文档作为一个标准 PHP 对象进行遍历。
在这篇教程中,将会实现存储为 XML 文件的个人简历 Web 页面,并探究两种从表示逻辑中分离数据和业务逻辑的解决方案:
- 一种方案是通过 PHP 5 中的 XSL 模块使用 XSLT
- 另一种方案是使用 PHP 5 中的 SimpleXML 模块
首先,创建一个小型驱动脚本,接下来,按顺序实现三个 XSLT 样式表来实现内容和表示的分离。最后,在 PHP 中使用 SimpleXML 模块实现相同的转换。尽管两种技术(XSLT 和 PHP)的基本机制是完全不同的,但两种实现的结果代码却有非常相似的结构。
尽管目前大多数的数据被存储在关系数据库中,但是,对于那些不经常改变、而且不需要锁定记录的小型数据集,例如个人简历,XML 是最理想的存储格式,便于添加数据。在这篇教程中,您将通过把 XML 简历文档显示为 HTML Web 页面来了解 XSLT 和 SimpleXML 。
在这篇教程中,需要下列工具:
- 本教程使用PHP 版本 5.2.6。
- SimpleXML 包含于 PHP 5.0 及后期所有版本中,且默认情况下被设置为启用。
- PHP 5 默认包含 XSL 扩展。为使用 XSL 扩展,可以在配置行添加参数
--with-xsl[=DIR]。要获得有关安装和配置 XSL 扩展的更多信息,参阅http://us.php.net/manual/en/xsl.setup.php。 - XML 编辑器。
