没有合适的资源?快使用搜索试试~ 我知道了~
首页理解 Zend 框架(IBM经典中文教程)
简介: 我们程序员是自相矛盾的懒汉。我的意思是我们会花上数小时甚至几天的时间来创建一个东西,让我们用 30 秒钟完成 5 分钟才能完成的任务。因此,Zend 框架的创建也许不是一件太让人惊奇的事情。您尚未听说过 Zend 框架吗?不要急 —— 您会了解的。本文概要介绍了 Zend 框架,解释了它的一般概念,并为 “理解 Zend 框架” 系列的其余部分做好准备,其余部分将通过遍历一个新的在线 RSS/Atom 提要阅读器的创建过程来深入到该框架的细节之中。在本文中不会有太多编码,但在其余部分中您应该熟悉 PHP。
资源详情
资源评论
资源推荐

1-214
理解 Zend 框架,第 1 部分: 基础
构建完美的阅读器
Nicholas Chase (ibmquestions@nicholaschase.com), 顾问, Backstop Media
简介: 我们程序员是自相矛盾的懒汉。我的意思是我们会花上数小时甚至几天
的时间来创建一个东西,让我们用 30 秒钟完成 5 分钟才能完成的任务。因此,
Zend 框架的创建也许不是一件太让人惊奇的事情。您尚未听说过 Zend 框架
吗?不要急 —— 您会了解的。本文概要介绍了 Zend 框架,解释了它的一般概
念,并为 “理解 Zend 框架” 系列的其余部分做好准备,其余部分将通过遍历
一个新的在线 RSS/Atom 提要阅读器的创建过程来深入到该框架的细节之中。在
本文中不会有太多编码,但在其余部分中您应该熟悉 PHP。
查看本系列更多内容
本文的标签: framework, good, php, zend, 第1部分
标记本文!
发布日期: 2006 年 9 月 28 日
级别: 中级
访问情况 : 12787 次浏览
评论: 1 (查看 | 添加评论 - 登录)
平均分 (26 个评分)
为本文评分
Zend 框架
众所周知,几年前,在众多强大且易用的脚本语言中,PHP 占据着首要位置。大
多数基于 UNIX® 和 Linux® 的 Web 服务器都安装了该语言。如果您是一个程序
员,您很容易获得一个主机帐户来使用该语言。Ruby 曾经风靡一时,但现在已
经没有多少人使用了。如果您曾经想使用动态生成的内容来构建一个网站,但却
并不确定是否要使用诸如 J2EE 之类的应用服务器,那么您就极可能使用 PHP。
它快速、易学、方便,您无需学习 Perl。
然后情况很快改变。Ruby on Rails 震惊了编程界。Ruby on Rails 是面向对象
和基于模型-视图-控制器 (MVC) 的典范,它提供了一种方式来实现我们都想实
现的事情,即不费任何力气地创建一个网站。当然,仍然存在两个问题。一个问
题是您需要学习一门新的编程语言。不 管这门语言是什么样的,这都不是一项
简单的任务。另一个问题是,如果您找到一台能运行 Ruby on Rails 的主机,

2-214
那是非常幸运的,而大多数情况下不可能。如果您(像我一样)拥有一个 10 年
的帐户,仅因为其缺少新的编程语言,那么放弃起来会犹豫再三的。当然,您这
些年来编写的所有现有的 PHP 代码也是一个问题。您真的愿意把它们全部扔掉
并重新开始吗?当然不是!
一个有进取心的 PHP 程序员需要做什么呢?那就是创建一个囊括大多数上述新
优势的新框架。Zend 框架由此诞生了。
Zend 框架提供了简洁稳定的代码,也许最为重要的是,它是在明晰的知识产权
下完成的。PHP 正在企业界跑马圈地,但如果您是一家财富 500 强公司,您不
会愿意冒险将模块提交给一个也许是属于其他公司知识产权的知识库。
准确地讲 Zend 框架究竟是什么呢?Zend 框架具有以下特征:
• 是基于 PHP 建立的。
• 是面向对象的。
• 使用 MVC 范例。
• 具有开放源码贡献者。
• 有贡献者负责保证他们的代码不是他人的知识产权。
通过建立 MVC 模式,Zend 框架的目标是使编程生活更加轻松,这不仅体现在通
用领域,而且对您始终想要做的具体的事情也是如此,比如访问数据库或输出
PDF 文件。(也许您一直都不输出 PDF 文件。但如果它更简单的话,我想您会
去这样做的。)
Zend 框架组件包括:
Zend_Controller
此模块为应用程序提供全面的控制。它将请求转化为特定的行为并确保其
执行。
Zend_Db
此模块基于 PHP 数据对象 (PDO) 并提供一种通用方式来访问数据库。
Zend_Feed
此模块使使用 RSS 和 Atom 提要变得简单。
Zend_Filter
此模块提供字符串过滤函数,如 isEmail() 和 getAlpha()。
Zend_InputFilter
对于 Zend_Filter,此模块是用来操作数组的,如表单输入。
Zend_HttpClient
此模块使您能轻易地执行 HTTP 请求。
Zend_Json
此模块使您能够轻易地将 PHP 对象转换成 JavaScript 对象符号,反之
亦然。
Zend_Log
此模块提供通用日志功能。

3-214
Zend_Mail
此模块使您能够发送文本文件和多部分 MIME 电子邮件。
Zend_Mime
此模块被 Zend_Mail 用来解码 MIME 消息。
Zend_Pdf
此模块用来创建新的 PDF 文档,及加载和编辑现有文档。
Zend_Search
此模块使您能在现有文本上执行复杂搜索。例如,您可以建立一个搜索引
擎,该引擎可以基于相关性或其他因素返回结果。
Zend_Service_Amazon、Zend_Service_Flickr 以及 Zend_Service_Yahoo
这些模块提供对这些 Web 服务 API 的简单访问。
Zend_View
此模块处理 MVC 模式的 “视图” 部分。
Zend_XmlRpc
此模块使您能够轻易地创建 XML-RPC 客户机。(已为将来计划好服务器
功能。)
现在来看一下我们的目标和在实现这个目标的过程中将做些什么。
回页首
项目
为了展示 Zend 框架的所有的内幕,需要一个涵盖 Zend 大部分功能的项目。那
很好,因为我最喜爱的项目仍然是在线提要阅读器。为什么呢?因为我还未找到
一个能够真正实现我想要实现的功能的项目。每当我掌握一门 新技术时,我就
试着制作一个比我以前用的要更好的提要阅读器。所以我们要创建一个新的在线
RSS/Atom 提要阅读器服务。
这个世界真的需要另一个在线提要阅读器吗?也许。但我不介意我是其惟一的使
用者。并且要点是:Zend 框架目标在于使我能用于项目上的东西足够简单。我
用它们仅仅是因为我想,而不是因为我花了价值成百上千美元的研究来证明它。
那么这个作为新闻管理器的宝贝 应该实现些什么呢?目前来讲,它应当具备以
下功能:
• 使用户能够保存提要或订阅的集合。
• 使用户能够阅读提要和单个条目。
• 使用户能够保存单个帖子。
• 使用户能够针对特定的文本来搜索已保存的条目。
• 使用户能够容易地阅读没有 RSS 提要的页面。
• 使用户能够打印帖子集合。
在本系列中,我将向您展示如何通过 Zend 框架来实现所有这些功能。本系列包
括:

4-214
第 1 部分:基础
本文在总体上解释了这个项目和 Zend 框架。
第 2 部分:添加数据库
此教程展示如何使用 Zend_DB 模块创建并操纵用来存储订阅信息、已保
存条目和其他信息的中央数据库。
第 3 部分:提要
现在我们把提要加入到这个整体中来,使用户能够创建一个帐户、订阅特
定的提要,并显示这些提要。此教程使用 Zend_Feed 和
Zend_Inputfilter 模块,后者用来检验电子邮件地址并去除提要条目中
的 HTML 标记。
第 4 部分:当没有提要时:Zend_HTTPClient 模块
并非所有的站点都有提要,但在同一个地点追踪所有的东西还是有用的。
这篇文章展示了如何使用 Zend_HTTPClient 模块来创建代理将数据拖入
提要阅读器界面中。
第 5 部分:创建 PDF 文件
此教程解释如何使用 Zend_PDF 模块来用保存的文章、图像和搜索结果创
建定制的 PDF 文件。
第 6 部分:发送电子邮件
这篇文章解释如何使用 Zend_Mail 模块提醒用户有新的帖子和订阅的提
要,甚至使用 HTML 格式的电子邮件发送这些帖子。
第 7 部分:搜索
这篇文章解释如何使用 Zend_Search 模块针对一个特定的搜索条件搜索
现有的和已保存的日志条目,并返回排列好的结果。
第 8 部分:添加相关的信息和服务
此教程解释如何使用 Zend_Service 模块从其他服务特别是从 Amazon、
Flickr 和 Yahoo! 获取信息。此界面将使用 Ajax 从当前日志条目或者
用户指定的搜索条件中获取相关的书、照片和搜索结果。
第 9 部分:添加 Ajax
Zend 框架通过本地 PHP 对象同 JavaScript 对象符号 (JSON) 之间的
自动互换使得在应用程序中添加异步的 JavaScript + XML (Ajax) 交互
变得简单。这篇文章展示了如何将此功能添加到提要阅读器中,还简单描
述了 JSON。
回页首
安装
Zend 框架不需要任何特别的安装,但您需要牢记一些需求。Zend 框架需要 PHP
V5,它同 V5.0.4 及以上版本兼容,所以您可以使用而不是必须用 V5.1。但无
论如何,您必须确保库目录包含在 include_path 中,Zend 框架将从中寻找其
所有的文件。要想这样,请确保在 php.ini 文件中设置 include_path,如:
; Windows: "\path1;\path2"
include_path = ".;c:\php\includes;e:\sw\zendframework\library"

5-214
这样就可以了。
回页首
MVC 模式
提到图形设计,我不可能知其不可为而为之,因为这不是我所擅长的。然而,给
我一个其他有天赋的人拼凑好的设计,我可以用那个界面完成您想完成的任何
事情。因而,能够分解好一个基于网络的应用程序的设计相关的工作是非常有利
的,这样,设计人员、编码人员和 DBA 都可以做他们各自擅长的事情。这就是 MVC
模式的实质,它将一个项目分解成三层。
模型-视图-控制器的定义
按照定义,模式是多年演化而来的做事情的方法,因为它们是某一问题的好的解
决方案。模型-视图-控制器 (MVC) 模式也不例外。由于具体的创建过程有所不
同,所以您偶尔会发现一些定义之间存在差异。例如,一些对 MVC 的定义中将
控制器的角色定义成简单地改变状态,其所有的业务逻辑都集成在模型层。最后,
惟一重要的事情是,应用程序以最有效的方式完成了您想要它完成的事 情。
模型层
由真实数据的表示组成。例如,在我们的提要阅读器项目中,包含了用
户、提要和提要条目。它们在数据库中的表示总体上 “建模” 了它们的结构,
从而组成了模型层。
视图层
由一些逻辑组成,这些逻辑实际上定义了显示的数据如何表现。它并不
决定这些已显示的数据是什么,而仅仅是它们如何表现。理想状态下,该模块不
包含任何逻辑,只接受所给信息,并把它们显示出来。
控制器
实际上定义了数据是什么。事实上,控制器是所有逻辑存放的地方。在
Zend 框架中,该层控制了要执行的行为。例如,如果我想要显示单个提要条目
对象,那么职责被解析为:提要条目对象具有一个控制器,该控制器定义了当调
用显示行为 时所发生的事情。该显示行为回调以从模型(或者说是数据库或其
他持久性存储器)中获取需要的数据,然后将这些字段 —— 如标题、内容、持
久链接等 —— 填入视图中,该视图可以将其简单地显示在浏览器中。
应当承认,对大多数程序员来说,这是一次启程。尽管存在对象,但 PHP 始终
是一门过程化的语言。尽管如此,这项交易是绝对值得的。按照 MVC 模式构建
应用程序远要比构建一个里面乱成一团的应用程序要简单的多。
现在,让我们来看看您需要做些什么。
回页首
编码准则
剩余213页未读,继续阅读
















seven_sh_1979
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- Xilinx SRIO详解.pptx
- Informatica PowerCenter 10.2 for Centos7.6安装配置说明.pdf
- 现代无线系统射频电路实用设计卷II 英文版.pdf
- 电子产品可靠性设计 自己讲课用的PPT,包括设计方案的可靠性选择,元器件的选择与使用,降额设计,热设计,余度设计,参数优化设计 和 失效分析等
- MPC5744P-DEV-KIT-REVE-QSG.pdf
- 通信原理课程设计报告(ASK FSK PSK Matlab仿真--数字调制技术的仿真实现及性能研究)
- ORIGIN7.0使用说明
- 在VMware Player 3.1.3下安装Redhat Linux详尽步骤
- python学生信息管理系统实现代码
- 西门子MES手册 13 OpcenterEXCR_PortalStudio1_81RB1.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0