PHP框架深入学习.docx
- 文档编号:24572758
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:52
- 大小:59.70KB
PHP框架深入学习.docx
《PHP框架深入学习.docx》由会员分享,可在线阅读,更多相关《PHP框架深入学习.docx(52页珍藏版)》请在冰豆网上搜索。
PHP框架深入学习
PHP框架,第1部分:
开始使用三种常用框架
Zend、symfony、CakePHP
DuaneO'Brien,PHP开发人员,自由撰稿人
简介:
短短数年前,对PHP最常见批评之一是不支持MVC样式的架构。
随着时代的变迁,现在在PHP框架领域里可以获得多种选择。
本系列将介绍三个广泛使用的PHP框架——Zend、symfony和CakePHP——通过在三个框架中构建和扩展样例应用程序来检验这三个框架的类似之处和不同之处。
查看本系列更多内容
标记本文!
发布日期:
2007年11月12日
级别:
中级
访问情况 5906次浏览
建议:
0 (添加评论)
平均分(共7个评分)
“PHP框架”系列专门针对那些想要开始使用框架、但又没有机会详细检验可用框架的PHP开发人员。
在学完本系列后,您将了解选择这三个框架的原因、如何安装每个框架,并且充分运用将在三个框架中扩展的测试应用程序。
听起来要学习的内容很多,但是不必担心。
内容虽然多,但是我们已经把内容细分为多个便于管理的部分。
关于本系列
本系列的第1部分将列出本系列涵盖的内容,介绍将进行考察的框架以及说明如何安装,并查看将构建的第一个测试应用程序。
第2部分将指导您在三个框架中构建样例应用程序,着重说明了它们的类似之处和不同之处。
第3部分从扩展测试应用程序开始,然后处理不符合一般规律的例外情况。
所有框架都能很好地完成份内的任务。
每个项目中都需要完成一些框架设定工作之外的事情。
第2部分就将介绍那些情况。
第4部分主要介绍了Ajax支持。
使用本机代码和第三方库检验了Ajax的使用——特别介绍了每个框架如何运行及接受具体的常用库。
第5部分将处理如何在框架外部工作。
设定一项任务(每晚更新脚本),并在每个框架中检验完成此项任务的过程。
回页首
关于本文
本文提供了大量内容。
您必须快速地跟上节奏。
本文要对三种框架进行审视。
是哪三种框架?
为什么要针对这三种框架?
还有其他哪些框架?
为什么不选择其他框架?
太多的问题要解答!
但是在执行每个框架的安装过程之前,大部分问题都将得到回答。
然后您将了解本系列后续文章中使用的测试应用程序。
您马上就可以了解不同框架之间有何不同之处以及这些框架都可以实现哪些相同的工作。
系统要求
开始之前,需要具备一定的工作环境。
需要满足的要求包括:
1.支持会话的HTTP服务器(并且最好启用了mod_rewrite)——本系列使用的是启用了mod_rewrite的 ApacheV1.3。
2.PHPV5.1.4 或更高版本——并不是所有框架都需要使用此版本级别的PHP,但是为了简单起见,所有框架都将使用同一个PHP安装。
本系列使用的是PHPV5.2.3。
3.最近发布的 MySQL 安装——可以使用并支持若干种其他数据库选择,但是本系列和样例应用程序都是使用MySQLV5.0.37编写的。
4.支持PHPV5.2.4或更高版本及MySQL的操作系统——本系列中使用了Linux®。
如果您是Windows®用户,则需要做出明显的调整,尤其在下面介绍创建目录时。
先决条件
假定您已经了解PHP、应用程序设计,以及如何在数据库中工作。
不要求您具有框架使用经验,但是您应当已经准备好开始使用框架。
回页首
模型框架
在了解哪些框架被选中之前,有必要来讨论一下框架是什么。
框架思想就是提供一种可以在多个应用程序中使用的设计。
所有应用程序都有大量通用的基本内容——具体地说,就是某类与数据库的接口、某些应用程序逻辑、应用程序呈现给用户的内容等。
如果您编写过许多PHP应用程序,则会知道这些基本内容是什么。
您可能已经编写过一组函数或从数据库中读取数据和向数据库中写入数据的类,可能已经使用过诸如Smarty之类的模板引擎来管理UI。
而且一定编写过大量PHP代码来完成诸如分析表单提交并根据提交的数据作决定之类的事务。
如果您已经编写过很多应用程序,则可能已经一次又一次地做过相同的基本工作,有时还会将一个应用程序中的代码借用到另一个应用程序中。
框架专门用于为这些常用元素(数据库交互、表示层、应用程序逻辑)提供结构,以便您可以花费更少的时间来编写数据库接口代码或者表示层接口,而花费更多的时间来编写应用程序本身。
以这种方式分解应用程序,这种架构被称为模型-视图-控制器(Model-View-Controller,MVC)。
模型 指数据,视图 指表示层,而控制器 指应用程序逻辑或业务逻辑。
对MVC的完整讨论超出本文的范围,但是鼓励您研究MVC并深入了解MVC的一切(请参阅 参考资料)。
回页首
选择框架
每种语言几乎都有若干个框架可用。
选择刚好满足需求的框架可能有点难,尤其是当您以前未曾使用过任何一个框架时更是如此。
虽然熟悉此领域的同事和可信赖的developerWorks作者提供的建议和评价会十分有帮助,但是选择任何框架时实际上应当遵循的惟一一个指导原则是:
框架为每个人 节省的时间和精力越多越好。
如果一个框架工作得很好但是会导致产生大量支持调用,那就不是一个优秀框架。
如果一个框架易于支持,但是起到的阻碍作用大于辅助开发作用,那也不是一个优秀框架。
如果一个框架十分优雅,但是会导致出现支持问题和开发问题,那么这个框架也是没有用的。
选择项目框架时,考虑从上到下所有相关人员的意见,并且在评估框架时,考虑到对其他各方的影响。
当考虑采用一个框架时,请进一步审视您的应用程序,并思考该应用程序是不是需要一个框架。
框架不是必需品。
即使不使用框架,也可以继续编写企业应用程序。
框架会对项目有帮助么?
它是否会节省每个人的时间和精力?
您的应用程序在框架中是否会执行得更好?
它是否将提供所缺乏的稳定性?
如果上面任意一个问题的答案为是,那么您应当考虑采用框架。
如果所有这些问题的答案都为否,那么使用框架只会把事情变复杂。
可惜,本文的长度和范围限制不允许全面介绍所有可用的PHP框架。
本系列主要介绍三个框架:
∙Zend框架
∙symfony
∙CakePHP
选择这些框架的原因有很多,但可能都属于这几类因素:
“您老板听说过的框架”、“某些人已经安装过的框架”或者“曾经谈论过的框架”。
我鼓励您研究CodeIgniter、Seagull、WebApplicationComponentToolkit(WACT)、PRADO、Zoop、PHPonTrax或者其他众多可用PHP框架中的一个。
框架选择全凭个人喜好,就像选择用哪种语言编写代码一样。
本系列不会告诉您哪个框架比其他框架更好或更差。
哪个框架在某方面做得好,我们就会讨论它。
哪个框架看上去不实用,我们也会讨论它。
即使我们不能全面地涵盖各种框架,我们采用的方法也将帮助您学会衡量其他框架的优点和缺点。
您需要对正在检验的框架形成自己的观点,哪些框架您喜欢,并且决定继续使用哪个框架。
Zend框架
所有人都知道Zend——“PHP公司”。
当您下载和安装PHP时,从大约V3开始,您就是在从Zend下载PHP。
除了发布PHP之外,ZendTechnologies多年来已经提供了大量PHP支持技术。
Zend提供适用于PHP的框架应当不稀奇——这是一个到现在为止已经有两百万下载次数的流行框架。
如果您老板听说过PHP框架,那么很可能指的就是Zend框架。
symfony
由Sensio赞助的symfony“旨在提高创建和维护Web应用程序的速度,以及用功能、控制和愉悦来替代重复性的编码任务”。
symfony框架已经在世界各地的许多企业级应用程序中使用,其中可能包括最著名的Askeet和Yahoo!
书签。
如果您认识的某个人安装、使用或玩转某个PHP框架,那么该框架很可能就是symfony。
CakePHP
CakePHP大部分源自RubyonRails,它旨在把简单性和可伸缩性引入到PHP框架中。
CakePHP一直被视为顶级PHP框架,并且PHPV5最近被选作MamboContentManagementSystem的核心。
受强大的社区及快速增长的用户库推动,CakePHP的受欢迎程度正在稳步增加。
如果您曾听到过关于PHP框架的讨论,那么该讨论可能就是关于CakePHP的。
回页首
安装
每个框架都有自己的一组安装说明,并且完整的安装细节超出本文的范围。
本文将重点说明这三个框架的安装,突出每个单独框架的安装说明里可能未涉及的要点,或者需要有别于安装说明的内容,因为将全部三个框架安装到一台计算机上十分特殊。
首先创建一个文件夹来保存所有代码、框架并包括本系列需要的内容(例如,名为/column的目录)。
在此目录中,创建四个附加目录:
htdocs、protected、include和src。
编辑Apacheconf文件,使文档根目录指向/column/htdocs——然后当您处于该目录中时(如果尚不在其中),应当启用mod_rewrite。
编辑php.iniconf文件使/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)。
稍后将对这些文件中的一些文件进行操作,不过现在这样就可以了。
回页首
测试应用程序
您已经下载并安装了三个框架。
但是您可能已经注意到自己尚未用这三个框架执行任何实际操作,例如用HelloWorld应用程序检验安装。
那是因为您要跳过HelloWorld并转到较深入(但不会非常深入)的内容中。
在PHP框架中构建HelloWorld应用程序可能会有点痛苦。
使用框架需要花费一定的系统开销,并且该系统开销发生在您尝试创建诸如HelloWorld等简单内容时。
但是,在处理更复杂的应用程序时,同样的系统开销看上去则成为合理的支出。
您将构建的测试应用程序并不复杂。
该测试应用程序将允许您使用文本区域把文本粘贴到应用程序中。
该文本将被保存到数据库中并在请求时由该应用程序检索来显示。
使用这样一个应用程序,您将可以轻松地创建和更新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表
CREATETABLE'posts'(
'id'INT(10)NOTNULLAUTO_INCREMENTPRIMARYKEY,
'title'VARCHAR(255)NOTNULL,
'text'TEXTNOTNULL,
'modified'TIMESTAMPONUPDATECURRENT_TIMESTAMPNOTNULLDEFAULTCURRENT_TIMESTAMP
)ENGINE=MYISAM;
对于Zend和symfony,将把对修改后的列的维护工作留给数据库。
对于CakePHP,将使用略有不同的SQL。
这样做将使Cake为您变一些魔术(尤其是,CakePHP将自动维护修改后的列)。
清单2.在CakePHP中创建posts表
CREATETABLE'posts'(
'id'INT(10)NOTNULLAUTO_INCREMENTPRIMARYKEY,
'title'VARCHAR(255)NOTNULL,
'text'TEXTNOTNULL,
'modified'DATETIMEDEFAULTNULL
)ENGINE=MYISAM;
这和使用表语法一样简单。
根据这些表的外观,您应当非常清楚Blahg的外观及运行会是怎样的。
您甚至可能亲自构建Blahg。
回页首
接下来的步骤
请忍住要立即投入并开始玩转框架的诱惑。
相反,花一些时间在不使用任何框架的情况下构建Blahg。
用您惯用的方法编写一个应用程序,不用管那是一种什么样的方法。
构建Blahg时一定要遵守上面列出的要求——仍然不要太有想象力。
通过在框架上下文外部构建测试应用程序并修改应用程序以包括在本系列中构建的增强功能,您可以很好地衡量给定框架对需求和开发风格的满足程度。
回页首
结束语
到这里,我们已经打好了基础。
我希望您的安装顺利完成,但是如果遇到任何问题,则一定要研究每个单独框架的安装文档(请参阅 参考资料)。
请花一些时间根据以上指导信息构建Blahg。
这将是您值得花时间去做的事情。
参考资料
学习
∙您可以参阅本文在developerWorks全球站点上的 英文原文。
∙查阅 ZendFramework手册。
∙获得 symfony文档。
∙查阅 CakePHP手册(注:
该手册是为CakePHPV1.1撰写的。
如果您使用的是CakePHPV1.2,则可能会有些差别)。
∙阅读五部分系列教程“CookupWebsitesfastwithCakePHP”。
∙访问Wikipedia进一步了解 软件框架。
∙从Wikipedia中获得 MVC结构 的概览。
∙有关更多信息,请参考 PHP手册。
∙要获得其他PHP文档,请访问 PHP.net。
∙要获得学习如何用PHP编程的教程,请查阅developerWorks“学习PHP”系列。
∙PHP.net 是PHP开发者的重要资源。
∙查看“PHP推荐读物列表”。
∙浏览developerWorks上的全部 PHP文章和PHP教程。
∙查看IBMdeveloperWorks的 PHP项目资源 以扩展PHP技巧。
∙收听针对软件开发人员的有趣访谈和讨论,一定要访问 developerWorkspodcast。
∙要将数据库与PHP结合使用?
查看 ZendCoreforIBM,它是一个无缝的、可以立即使用、易于安装、支持IBMDB2V9的PHP开发和生产环境。
∙随时关注developerWorks的 技术事件和网络广播。
∙查阅最近将在全球举办的面向IBM开放源码开发人员的研讨会、交易展览、网络广播和其他 活动。
∙访问developerWorks 开放源码专区,获得丰富的how-to信息、工具和项目更新,帮助您用开放源码技术进行开发,并与IBM产品结合使用。
∙查看免费的 developerWorksOndemanddemo 观看并了解IBM及开源技术和产品功能。
获得产品和技术
∙下载 PHPV5.2.3。
∙下载 symfony。
∙下载 CakePHP。
∙使用 IBM试用软件 改进您的下一个开发项目,这些软件可以通过下载或从DVD中获得。
∙下载 IBM产品评估版,并开始使用DB2®、Lotus®、Rational®、Tivoli®和WebSphere®的应用程序开发工具和中间件产品。
讨论
∙参与 developerWorksblog 并加入developerWorks社区。
∙加入developerWorks PHPForum:
DevelopingPHPapplicationswithIBMInformationManagementproducts(DB2,IDS)。
关于作者
DuaneO'Brien从OregonTrail还只是文本的时候开始,就一直在技术方面游刃有余。
他喜欢的食物是寿司。
他还不曾去过月球。
PHP框架,第2部分:
构建样例应用程序
用Zend、symfony和CakePHP创建Blahg
DuaneO'Brien,PHP开发人员,自由撰稿人
简介:
“PHP框架”系列将介绍三个广泛使用的PHP框架——Zend、symfony和CakePHP——通过在三个框架中构建和扩展样例应用程序,研究三个框架的类似之处和不同之处。
第1部分将列出本系列涵盖的内容并且配置先决条件。
在第2部分中,您将分别在三个框架中构建样例应用程序。
查看本系列更多内容
标记本文!
发布日期:
2007年11月12日
级别:
中级
访问情况 696次浏览
建议:
0 (添加评论)
平均分(共0个评分)
在本系列的 第1部分 中,我们已经设定了本系列的范围并满足了先决条件。
现在,将分别在三个框架中构建样例应用程序。
在接下来的几篇文章里,将扩展应用程序、了解不符合常规的例外情况、使用Ajax、集成外部任务等等。
本文将指导您分别在三个框架中创建样例应用程序Blahg。
您将从头做起,了解在Zend框架、symfony和CakePHP中开发简单应用程序的基础知识。
您应当已经完成了 第1部分,该部分介绍了如何安装这三个框架及使用三个框架必须满足的先决条件。
如果您还未读过这一部分,则应立即阅读。
假定您已经了解PHP、应用程序设计以及如何在数据库中工作。
您不需要具有框架使用经验,但是您应当已经准备好开始使用框架。
在Zend框架中构建Blahg
首先,创建目录/column/htdocs/zend和/column/protected/zend。
这些目录将分别保存Web可访问的文件及Web不能访问的应用程序文件。
在/column/htdocs/zend中,用以下命令行创建一个.htaccess文件:
RewriteEngineon
RewriteRule!
\.(js|ico|gif|jpg|png|css)$index.php
在涉及目录结构时,每个框架都有自己特定的要求。
对于Zend框架,需要创建目录/column/protected/zend/controllers、/column/protected/zend/models和/column/protected/zend/views来保存控制器、模型和视图。
此外,需要创建目录/column/protected/zend/views/scripts;并且对于每个控制器,需要创建一个目录来保存一些视图。
例如,您知道Blahg将需要为post控制器提供一些视图,那么就需要创建目录/column/protected/zend/views/scripts/post来保存该视图。
已经准备好目录。
该来构建模型了。
构建Zendposts表和模型
在第1部分中,创建了将要使用的posts表。
如果您跳过了那段内容,请立即查看并且创建该表。
该表的模型非常简单。
它应当被命名为Posts.php,并且应当在/column/protected/zend/models/创建它。
Posts.php将扩展 Zend_Db_Table 类,并且您将使用的大多数方法均继承自该类。
如果打开代码归档中的Posts.php文件,您将看到实际代码非常少。
构建Zend Front 控制器和 PostController
对于 Front 控制器,将在/column/htdocs/zend中创建index.php文件。
此文件是应用程序公开给外界的惟一部分。
应用程序的其余部分是通过此文件来访问的。
Front 控制器需要完成几项事务:
装入ZendLoader(避免必须手动包含各个库)、设置与数据库的连接以及将请求分派给相应的应用程序控制器;在本例中为 PostController。
如您所料,将在/column/protected/zend/controllers目录中创建PostController.php文件。
需要创建的Po
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PHP 框架 深入 学习
![提示](https://static.bdocx.com/images/bang_tan.gif)