谈谈三款广泛使用的PHP 框架

转帖|行业资讯|编辑:龚雪|2014-08-08 09:24:52.000|阅读 385 次

概述:本系列将介绍三个广泛使用的 PHP 框架 —— Zend、symfony 和 CakePHP —— 通过在三个框架中构建和扩展样例应用程序来检验这三个框架的类似之处和不同之处。

相关链接:

模型框架

在了解哪些框架被选中之前,有必要来讨论一下框架是什么。

框架思想就是提供一种可以在多个应用程序中使用的设计。所有应用程序都有大量通用的基本内容 —— 具体地说,就是某类与数据库的接口、某些应用程序逻辑、应用程序呈现给用户的内容等。如果您编写过许多 PHP 应用程序,则会知道这些基本内容是什么。您可能已经编写过一组函数或从数据库中读取数据和向数据库中写入数据的类,可能已经使用过诸如 Smarty 之类的模板引擎来管理 UI。而且一定编写过大量 PHP 代码来完成诸如分析表单提交并根据提交的数据作决定之类的事务。如果您已经编写过很多应用程序,则可能已经一次又一次地做过相同的基本工作,有时还会将一个应用程序中的代码借用到另一个应用程序中。

框架专门用于为这些常用元素(数据库交互、表示层、应用程序逻辑)提供结构,以便您可以花费更少的时间来编写数据库接口代码或者表示层接口,而花费更多的时间来编写应用程序本身。以这种方式分解应用程序,这种架构被称为模型-视图-控制器(Model-View-Controller,MVC)。模型 指数据,视图 指表示层,而控制器 指应用程序逻辑或业务逻辑。对 MVC 的完整讨论超出本文的范围,但是鼓励您研究 MVC 并深入了解 MVC 的一切(请参阅 参考资料)。

选择框架

每种语言几乎都有若干个框架可用。选择刚好满足需求的框架可能有点难,尤其是当您以前未曾使用过任何一个框架时更是如此。虽然熟悉此领域的同事和可信赖的 developerWorks 作者提供的建议和评价会十分有帮助,但是选择任何框架时实际上应当遵循的惟一一个指导原则是:框架为每个人 节省的时间和精力越多越好。如果一个框架工作得很好但是会导致产生大量支持调用,那就不是一个优秀框架。如果一个框架易于支持,但是起到的阻碍作用大于辅助开发作用,那也不是一个优秀框架。如果一个框架十分优雅,但是会导致出现支持问题和开发问题,那么这个框架也是没有用的。

选择项目框架时,考虑从上到下所有相关人员的意见,并且在评估框架时,考虑到对其他各方的影响。

当考虑采用一个框架时,请进一步审视您的应用程序,并思考该应用程序是不是需要一个框架。框架不是必需品。即使不使用框架,也可以继续编写企业应用程序。框架会对项目有帮助么?它是否会节省每个人的时间和精力?您的应用程序在框架中是否会执行得更好?它是否将提供所缺乏的稳定性?如果上面任意一个问题的答案为是,那么您应当考虑采用框架。如果所有这些问题的答案都为否,那么使用框架只会把事情变复杂。

可惜,本文的长度和范围限制不允许全面介绍所有可用的 PHP 框架。本系列主要介绍三个框架:

  • Zend 框架
  • symfony
  • CakePHP

选择这些框架的原因有很多,但可能都属于这几类因素:“您老板听说过的框架”、“某些人已经安装过的框架” 或者 “曾经谈论过的框架”。我鼓励您研究 CodeIgniter、Seagull、Web Application Component Toolkit (WACT)、PRADO、Zoop、PHP on Trax 或者其他众多可用 PHP 框架中的一个。框架选择全凭个人喜好,就像选择用哪种语言编写代码一样。本系列不会告诉您哪个框架比其他框架更好或更差。哪个框架在某方面做得好,我们就会讨论它。哪个框架看上去不实用,我们也会讨论它。即使我们不能全面地涵盖各种框架,我们采用的方法也将帮助您学会衡量其他框架的优点和缺点。您需要对正在检验的框架形成自己的观点,哪些框架您喜欢,并且决定继续使用哪个框架。

Zend 框架

所有人都知道 Zend —— “PHP 公司”。当您下载和安装 PHP 时,从大约 V3 开始,您就是在从 Zend 下载 PHP。除了发布 PHP 之外,Zend Technologies 多年来已经提供了大量 PHP 支持技术。Zend 提供适用于 PHP 的框架应当不稀奇 —— 这是一个到现在为止已经有两百万下载次数的流行框架。如果您老板听说过 PHP 框架,那么很可能指的就是 Zend 框架。

symfony

由 Sensio 赞助的 symfony “旨在提高创建和维护 Web 应用程序的速度,以及用功能、控制和愉悦来替代重复性的编码任务”。symfony 框架已经在世界各地的许多企业级应用程序中使用,其中可能包括最著名的 Askeet 和 Yahoo! 书签。如果您认识的某个人安装、使用或玩转某个 PHP 框架,那么该框架很可能就是 symfony。

CakePHP

CakePHP 大部分源自 Ruby on Rails,它旨在把简单性和可伸缩性引入到 PHP 框架中。CakePHP 一直被视为顶级 PHP 框架,并且 PHP V5 最近被选作 Mambo Content Management System 的核心。受强大的社区及快速增长的用户库推动,CakePHP 的受欢迎程度正在稳步增加。如果您曾听到过关于 PHP 框架的讨论,那么该讨论可能就是关于 CakePHP 的。

安装

每个框架都有自己的一组安装说明,并且完整的安装细节超出本文的范围。本文将重点说明这三个框架的安装,突出每个单独框架的安装说明里可能未涉及的要点,或者需要有别于安装说明的内容,因为将全部三个框架安装到一台计算机上十分特殊。

首先创建一个文件夹来保存所有代码、框架并包括本系列需要的内容(例如,名为 /column 的目录)。在此目录中,创建四个附加目录:htdocs、protected、include 和 src。编辑 Apache conf 文件,使文档根目录指向 /column/htdocs —— 然后当您处于该目录中时(如果尚不在其中),应当启用 mod_rewrite。编辑 php.ini conf 文件使 /column/include/ 目录包含在 include_path 指令中。如果您还没明白所有这些操作的意义,请不要着急。当您安装框架时,一切都会变得清晰。

安装 Zend 框架

下载 Zend 框架(请参阅 参考资料)。本系列使用的是 V1.0.1。下载并将 Zend 框架解压缩到 /column/src 目录中。该发行版将包含若干个文本文件和三个目录:demos、tests 和 library。把库目录(这应当只是名为 Zend 的文件夹)的内容复制到 /column/include/ 目录中。现在应当有包含若干个目录和文件的名为 /column/include/Zend 的文件夹。这些是 Zend 框架所使用的库。

好的!您已经安装了 Zend 框架。

安装 symfony

下载 symfony(请参阅 参考资料)。您可以通过下载页面中列出的任意一种方法随意安装 symfony,但是出于我们的目的建议下载 tarball。将 tarball 解压缩到 /column/src/symfony/ 目录中。您应当会看到四个目录(data、doc、lib 和 licenses),以及一些 README 文档。对于安装完成的应用程序来说,并不是所有的这些文档和目录都是必需的,但是现在,有这些文档和目录是可以的。对于安装来说,看上去可能过于简单。一定要记住,这些框架一般都是由实用程序和库组成的,因此安装框架并不难。使用框架需要执行一些追加配置。稍后您就将清楚如何配置。

安装 CakePHP

下载 CakePHP(请参阅 参考资料)。本系列使用的是 1.2.0.5427alpha 版本。不管是不是成熟的 alpha 版本,CakePHP 的 1.2 分支已经成为 CakePHP 社区广泛接受的标准。下载并解压缩 tarball,将其内容放到 /column/src/cakephp 中。应当得到四个目录(app、cake、doc 和 vendors)以及两个文件(.htaccess 和 index.php)。稍后将对这些文件中的一些文件进行操作,不过现在这样就可以了。

测试应用程序

您已经下载并安装了三个框架。但是您可能已经注意到自己尚未用这三个框架执行任何实际操作,例如用 Hello World 应用程序检验安装。那是因为您要跳过 Hello World 并转到较深入(但不会非常深入)的内容中。

在 PHP 框架中构建 Hello World 应用程序可能会有点痛苦。使用框架需要花费一定的系统开销,并且该系统开销发生在您尝试创建诸如 Hello World 等简单内容时。但是,在处理更复杂的应用程序时,同样的系统开销看上去则成为合理的支出。

您将构建的测试应用程序并不复杂。该测试应用程序将允许您使用文本区域把文本粘贴到应用程序中。该文本将被保存到数据库中并在请求时由该应用程序检索来显示。使用这样一个应用程序,您将可以轻松地创建和更新 Web 站点中的内容,而无需编辑 HTML 或上传新文件。这种高度创新并使用新方法的应用程序将被称为 Blahg。

Blahg 怎样使用?

根据 Blahg 的描述,您可能已经推断出如何设计应用程序需要考虑的几个方面。Blahg 需要四个元素:

  1. 包含表单的页面 —— 此表单至少要包含一个文本区域。此页面将是写入页面。
  2. 读取粘贴内容的页面 —— 此页面将需要被传递给某种 post 标识符。此页面将是读取页面。
  3. 列出可用粘贴内容的页面 —— 此页面将是索引页面。
  4. 保存粘贴内容的数据库表 —— 这张表至少需要保存粘贴的文本和 post 标识符,还可能保存 Post 标题和粘贴内容的最后一次修改日期。

很明显,Blahg 可以比现在更健壮,并且稍后在本系列中,您将执行一些增强工作。但是现在,满足这些简单要求就足够。可惜的是,您现在还不能获得在任意一个框架中构建 Blahg 的机会。那要在第 2 部分中进行。但是现在是设置您将使用的数据库的最佳时机。

设置数据库

在可以实际构建 Blahg 之前,需要设置数据库。并不是每个单独框架都必须设置数据库,但是出于本系列的学习目的,这样做将使事情变得更有序,同时可以避免必需的表前缀。

创建三个名为 Zend、symfony 和 Cake 的数据库,并将对每个数据库的全部权限授权给相应的用户。下面每个框架的指令都将包含创建 posts 表必需的 SQL。

摆弄数据库的同时,您也可以创建 Blahg 将在开头使用的表。使用以下 SQL 在 Zend 和 symfony 数据库中创建 posts 表。

清单 1. 在 Zend 和 symfony 中创建 posts 表

CREATE TABLE 'posts' (
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'title' VARCHAR( 255 ) NOT NULL ,
'text' TEXT NOT NULL ,
'modified' TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE = MYISAM ;

清单 2. 在 CakePHP 中创建 posts 表

CREATE TABLE 'posts' (
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'title' VARCHAR( 255 ) NOT NULL ,
'text' TEXT NOT NULL ,
'modified' DATETIME DEFAULT NULL
) ENGINE = MYISAM ;

转载自IBM!



标签:PHP

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

文章转载自:慧都控件网

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
Zend Studio

Zend Studio是新一代的专业级智能PHP IDE(应用程序开发环境)。

Zend Guard

保护PHP知识产权的代码加密解决方案

Zend Server

运行和管理需要高可靠性和安全性的PHP应用程序

在线
客服
在线
QQ
电话
咨询
400-700-1020
购物车 反馈 返回
顶部
在线客服系统
live chat