我们程序员是自相矛盾的懒汉。我的意思是我们会花上数小时甚至几天的时间来创建一个东西,让我们用 30 秒钟完成 5 分钟才能完成的任务。因此,Zend 框架的创建也许不是一件太让人惊奇的事情。您尚未听说过 Zend 框架吗?不要急 —— 您会了解的。本文概要介绍了 Zend 框架,解释了它的一般概念,并为 “理解 Zend 框架” 系列的其余部分做好准备,其余部分将通过遍历一个新的在线 RSS/Atom 提要阅读器的创建过程来深入到该框架的细节之中。在本文中不会有太多编码,但在其余部分中您应该熟悉 PHP。
Zend 框架 众所周知,几年前,在众多强大且易用的脚本语言中,PHP 占据着首要位置。大多数基于 UNIX® 和 Linux® 的 Web 服务器都安装了该语言。如果您是一个程序员,您很容易获得一个主机帐户来使用该语言。Ruby 曾经风靡一时,但现在已经没有多少人使用了。如果您曾经想使用动态生成的内容来构建一个网站,但却并不确定是否要使用诸如 J2EE 之类的应用服务器,那么您就极可能使用 PHP。它快速、易学、方便,您无需学* Perl。 然后情况很快改变。Ruby on Rails 震惊了编程界。Ruby on Rails 是面向对象和基于模型-视图-控制器 (MVC) 的典范,它提供了一种方式来实现我们都想实现的事情,即不费任何力气地创建一个网站。当然,仍然存在两个问题。一个问题是您需要学*一门新的编程语言。不管这门语言是什么样的,这都不是一项简单的任务。另一个问题是,如果您找到一台能运行 Ruby on Rails 的主机,那是非常幸运的,而大多数情况下不可能。如果您(像我一样)拥有一个 10 年的帐户,仅因为其缺少新的编程语言,那么放弃起来会犹豫再三的。当然,您这些年来编写的所有现有的 PHP 代码也是一个问题。您真的愿意把它们全部扔掉并重新开始吗?当然不是! 一个有进取心的 PHP 程序员需要做什么呢?那就是创建一个囊括大多数上述新优势的新框架。Zend 框架由此诞生了。 Zend 框架提供了简洁稳定的代码,也许最为重要的是,它是在明晰的知识产权下完成的。PHP 正在企业界跑马圈地,但如果您是一家财富 500 强公司,您不会愿意冒险将模块提交给一个也许是属于其他公司知识产权的知识库。 准确地讲 Zend 框架究竟是什么呢?Zend 框架具有以下特征: 是基于 PHP 建立的。 Zend 框架组件包括: Zend_Controller 项目 为了展示 Zend 框架的所有的内幕,需要一个涵盖 Zend 大部分功能的项目。那很好,因为我最喜爱的项目仍然是在线提要阅读器。为什么呢?因为我还未找到一个能够真正实现我想要实现的功能的项目。每当我掌握一门新技术时,我就试着制作一个比我以前用的要更好的提要阅读器。所以我们要创建一个新的在线 RSS/Atom 提要阅读器服务。 这个世界真的需要另一个在线提要阅读器吗?也许。但我不介意我是其惟一的使用者。并且要点是:Zend 框架目标在于使我能用于项目上的东西足够简单。我用它们仅仅是因为我想,而不是因为我花了价值成百上千美元的研究来证明它。那么这个作为新闻管理器的宝贝应该实现些什么呢?目前来讲,它应当具备以下功能: 使用户能够保存提要或订阅的集合。 在本系列中,我将向您展示如何通过 Zend 框架来实现所有这些功能。本系列包括: 第 1 部分:基础 安装 Zend 框架不需要任何特别的安装,但您需要牢记一些需求。Zend 框架需要 PHP V5,它同 V5.0.4 及以上版本兼容,所以您可以使用而不是必须用 V5.1。但无论如何,您必须确保库目录包含在 include_path 中,Zend 框架将从中寻找其所有的文件。要想这样,请确保在 php.ini 文件中设置 include_path,如: ; Windows: "\path1;\path2" MVC 模式 提到图形设计,我不可能知其不可为而为之,因为这不是我所擅长的。然而,给我一个其他有天赋的人拼凑好的设计,我可以用那个界面完成您想完成的任何事情。因而,能够分解好一个基于网络的应用程序的设计相关的工作是非常有利的,这样,设计人员、编码人员和 DBA 都可以做他们各自擅长的事情。这就是 MVC 模式的实质,它将一个项目分解成三层。 模型层 由真实数据的表示组成。例如,在我们的提要阅读器项目中,包含了用户、提要和提要条目。它们在数据库中的表示总体上 “建模” 了它们的结构,从而组成了模型层。 视图层 由一些逻辑组成,这些逻辑实际上定义了显示的数据如何表现。它并不决定这些已显示的数据是什么,而仅仅是它们如何表现。理想状态下,该模块不包含任何逻辑,只接受所给信息,并把它们显示出来。 控制器 实际上定义了数据是什么。事实上,控制器是所有逻辑存放的地方。在 Zend 框架中,该层控制了要执行的行为。例如,如果我想要显示单个提要条目对象,那么职责被解析为:提要条目对象具有一个控制器,该控制器定义了当调用显示行为时所发生的事情。该显示行为回调以从模型(或者说是数据库或其他持久性存储器)中获取需要的数据,然后将这些字段 —— 如标题、内容、持久链接等 —— 填入视图中,该视图可以将其简单地显示在浏览器中。 应当承认,对大多数程序员来说,这是一次启程。尽管存在对象,但 PHP 始终是一门过程化的语言。尽管如此,这项交易是绝对值得的。按照 MVC 模式构建应用程序远要比构建一个里面乱成一团的应用程序要简单的多。 现在,让我们来看看您需要做些什么。 编码准则 当您为 Zend 框架编码,或使用其编码时,您应该遵循特定的准则。这些准则是为了使团队项目变得更加简单而设计的。换句话说,通过定义编码规范,您不仅能避免接下来的问题,而且能够使其他人更容易阅读您的代码。Zend 框架文档中包含几页指导准则,比如: 确保文件整洁。换句话说,在文件头、标准的四格缩进等前面不能有任何前导或者后置的空格,这些空格会调用 Web 服务器导致意外地发送内容。 结束语 Zend 框架提供了一种新的、特定于 IP 的方式来构建 PHP 应用程序。因此,Zend 框架旨在改善您的 PHP 编码体验。在本系列中,我们将使用 Zend 框架来构建一个 RSS/Atom 提要阅读器。本系列以后的部分将涵盖数据访问、搜索、Web 服务以及该框架的其他部分。在第 2 部分中,将创建登录系统并开始构建数据库。 |