PHP5应用实例详解——使用Zend Framework&Smarty构筑真正的MVC模式应用(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-25 00:16:42

点击下载

作者:王志刚

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

PHP5应用实例详解——使用Zend Framework&Smarty构筑真正的MVC模式应用

PHP5应用实例详解——使用Zend Framework&Smarty构筑真正的MVC模式应用试读:

前言

笔者从业十几年以来,大部分的时间都是使用Java来进行应用程序的开发的。大家都知道Java有优良的跨平台性(Windows、UNIX环境皆宜),因其为面向对象语言,所以代码具有良好的可维护性,且可重复使用。自从出现了Struts等框架(Framework)技术,引入了MVC模式的编程概念后,在进一步提高系统的可维护性的同时,也提供了开发的效率。因此很多应用系统采用Java来开发。

但是,对于那些中小系统来说,维持运行Java应用程序(包括服务器租用或专线租用,各种应用软件)的费用,相对来说太昂贵。尤其与PHP应用程序的费用相比,要高出不少。可以找很多便宜的支持PHP的租用服务器,但很难找到便宜的可运行Java应用的租用服务器。而且使用Java进行开发时,要比想象的费时费力。因此,对于中小应用系统来说,我个人觉得选择PHP比Java更明智。

自2004年7月发布PHP5至今,已经过了5年多了。PHP的运行环境已经与过去有很大的不同了。当初一些人可能对PHP5的性能有些微词,随着PHP5升级到PHP5.1、PHP5.2,性能上有了巨大的改善。PHP5现在的性能可以说已经远远超过上一个版本PHP4了。对于个人用户,或一些中小应用系统来说,很多服务器空间提供商提供对PHP5、MySQL、PostgreSQL等的支持,可以利用这些资源快速的构筑自己的网络应用系统。

PHP5中强化了面向对象编程的概念,同时有了Zend Framework & Smarty这个强大的组合,使用PHP也可以构筑MVC模式的应用系统了。由于PHP的易学性,使用PHP构筑MVC模式的应用系统比Java更有优势,特别是对于中小企业而言。尽管很多人对PHP还存在些安全疑虑,但我个人认为PHP是比Java更有前途的语言,特别适合我们国家的国情,可以帮助中小企业使用它推进自己的信息化。这正是笔者当初着手编写这本书的主要原因。

本书除了提供许多可以立即导入到自己的应用程序中使用的应用实例外,花了大量的篇幅(第4章的一部分,第5章)介绍如何使用Zend Framework & Smarty构筑真正的MVC模式应用系统—书签共享系统。整个论述从基础知识开始,包括系统分析、共通功能的提炼,到最后的系统合成,循序渐进。相信只要理解了本书实例以及其中介绍的内容,应该可以使用Zend Framework & Smarty来构筑自己的MVC模式的应用程序了。

本书的相关代码以及相应的开源软件可以从www.broadview.com.cn下载得到。

朱蕾参加了本书第1章,第2章,第3章的编写。另外,在此特别感谢我的岳父,岳母在本书编写过程中的大力支持。编著者2010年5月第1章 导言

什么是PHP?听说用PHP进行编程好像挺简单的,它和其他语言有什么区别呢?什么是服务器端技术?什么又是客户端技术呢?在学习应用PHP进行编程前,不可避免有许多诸如此类的疑问,本章在介绍具体的例子之前,先试着帮助大家解决这些疑惑。

粗看本章,肯定有不少怀着诸如“实际的编程时,哪用得着这些啰里啰嗦的介绍呀”抱怨的朋友。请先稍安勿躁,对于一名程序员(Programmer)或系统工程师(System Engineer)来说,适当了解关于技术发展的由来,以及技术未来的发展方向,肯定对自身的职业发展是有帮助的。

本章中,首先介绍了各种Web技术的兴衰轨迹,以及PHP在其中的位置,或许能帮你在未来给用户提案时,能够很好地回答“为什么要选择PHP”的问题。同时还介绍了PHP+MySQL的环境配置,后面几节的例子将用到这个环境。如果自己配置出来的环境不能正确运行,请务必参照本章的配置。1.1 PHP技术的由来1.1.1 服务器端脚本的发展轨迹——服务器端技术以前的技术

Web技术的发展总是曲线的,有时因为某种原因而得到修正提高,各种各样的技术兴盛而又衰退。复杂的技术进步轨迹也是Web发展的一个很有趣的地方。从这个意义上说,服务器技术不仅是Web系统的最佳解决方案,而是Web技术发展的一个重要方面。

本节将介绍PHP(PHP,Hypertext Preprocessor)所代替的服务器端技术在整个Web技术发展中所处的位置,以及PHP在服务器端技术中所处的分量。HTML(HyperText Markup Language)

在急速的文档电子化的潮流中,曾出现过各种各样格式的电子文档。可是做成的电子文档,只是实现精美印刷这样的一个目的。很多被称为“标准”的格式,最终并没有成为标准,而且现在很多都消失了。

Web是作为基础技术以打破文档电子化时代混乱的面貌出现的,广泛应用的HTML技术是其中的标准技术之一。HTML(HyperText Markup Language)里有诸如、

的“对(tag)”。在“对”中间包含具体的文字,作为标示语言文档的构造,格式的定制都非常简单。尽管有许多像语义不够精确、实际安装时文件比较大等不足的地方,但是HTML作为Web系统的基础技术之一,功绩是不可磨灭的。后来,随着插件技术(Plugin)、CSS(Cascading Style Sheets)技术等的发展,HTML技术的表现力得到了飞跃的进步,但是最终HTML也只能提供生成静态文档的功能。因为那时,Web的主要目的只是文档的公布。ActiveX/Java Applet

后来,CSS和HTML保持着长期共存的关系,插件技术并没有流行多久。确实曾经有一个时期,有很多各种各样的插件出现,给用户呈现了华丽而优美的网页效果。但是,因为需要强制用户在客户端安装插件程序,总是给人不够安全的感觉,不可能被大多数用户所接受。

这个时候,作为替代方案——ActiveX、Java小程序(Applet)出现了。ActiveX和插入的Java小程序直接嵌入在网页中,运行时自动安装所需要的控件,省略了插件导入的步骤。ActiveX和Java小程序给开发人员带来了最早在客户端需要编程的想法。

网页内容有了动态的变化,确实给用户带来了享受的感觉,但是这两样技术的流行时间可以说都比较短。一个重要的原因就是用户需要掌握比HTML更高级的语言,如Visual Basic、C++、Java等语言,而用户能实现的只是“界面”等表面化的东西。当然,当时的网络环境,如网络速度、网络普及程度也不够发达,应用ActiveX、Java小程序的网页都显示出得太慢,超过了用户的忍耐度,也是其没能流行起来的其中一个原因。客户端、服务器端脚本

但是,ActiveX和Java小程序技术所带来的“客户端编程”的想法,在用户间流行起来了。显示的网页不再是静止不动,而是随着用户的输入、鼠标单击,网页显示的内容就会动态变化。所谓“交互式网站”的Web开发一时间流行起来了,这个时期正是全球规模的信息共享的目标达成之时,开发者的意识也从“如何实现信息共享”发展到了“如何做到与纸媒体的差别化”上来了。

能实现这些的就是客户端脚本了。以Javascript、VBScript为代表的客户端脚本语言是能在浏览器上运行的“简易”语言。它们本来就是为浏览器定制的,所以与ActiveX及Java小程序比较起来,运行时显得“轻”得多。基于这个理由,这两种脚本已被用户广泛接受了。后来又将Dynamic HTML及DOM(Document Object Model)的概念引进来,这样脚本语言的应用范围大大地扩展,功能也强化了。

但是,这些用脚本语言开发出来的程序网页尽管看起来是动态的,其实数据资源是静态的。因此,客户端、服务器端脚本是Web上“文字公开”的解决方案,并不是Web的基本构架。1.1.2 服务器端脚本的发展轨迹——CGI的时代

Web是在独特的文化中成长起来的,项目的前提有时也会变成了最终目的。正如1.1节里介绍的那样,Web本来的目的就是为了“文档公开共享”,但是从计算机技术的观点来看,要达成这个目的,需要解决浩如烟海的信息的输入/输出,也伴随着输入/输出的数据流程的问题。Web只有输出的部分,在某种意义上显得极端不自然。客户端脚本的极限

客户端脚本在Web的数据处理中,有各种各样的极限,下面将客户端脚本内包含的问题一一列举出来。

● 不能信息加工

客户端脚本只是实现了表面的动态化(Dynamic),所谓Dynamic HTML,只是从表面上表述了客户端脚本的特性。而本质上,客户端脚本并不能改变网页上的内容,从这个意义上讲还没有逃脱“文档公开”这个范围。

● 逻辑的复杂性与网页大小的比例

客户端脚本,顾名思义,它只能在客户端(浏览器)上运行,必须先将所有数据都下载到客户端才能执行。如果网页有10 000条数据,那么首先就要将这10 000条数据下载到客户端,而网页实际上用到的可能只是其中很少的几条,其余都是不需要的,这样一来就影响了网页的显示速度。这种抽取需要或不需要数据的功能,是客户端脚本所不具备的。

● 客户端环境依存

这里提醒大家的一点是,说到客户端,并不是只指桌面个人电脑的客户端,手机以及其他手持电子设备也包括在内,形态是多种多样的。

对于依存客户端环境的客户端脚本来说,随着终端设备的不同,对应不同的编程。从发展到现在的情况来看,开发者将所有终端设备的情况都考虑进去进行编程设计是不可能的。造成的结果就是在客户端只能安装各终端设备共通的功能,这样客户端脚本的适用范围就大大变小了。

● 程序的安全性

如“密码”这种机密性很高的信息在网页中处理的情况是很常见的。使用客户端脚本时,必须全在客户端公开。一些必须隐藏的信息,也必须全公开。最近出现的encode/uncode技术,在一定程度上解决了这些问题。CGI(Common Gateway Interface)

以上客户端脚本所面对的问题,其实是数据处理都是在客户端进行这个原因造成的,只要数据不在客户端处理时,这些问题就迎刃而解。那么,客户端以外的处理环境就是服务器了。

服务器上存储了文档、程序,以及其他相关数据。那些对用户来说没有用处的程序、不需要的数据其实不用通过网络传送了,需要隐藏的数据就不会通过网络泄露。服务器将完成所有的处理,只是将处理的结果以HTML的形式传送到客户端的浏览器。

这些服务器端的处理模式,其实并不陌生。Perl(Practical Extraction and Reporting Language)和以C为代表的CGI(Common Gateway Interface),就是以这些现在大家都很熟悉的模式运行的(如图1-1所示)。图1-1 服务器端脚本的运作机制

在内容为主体的网页中,以开发网页的计数器、访问列表这样的小功能为目的,CGI具体对于以数据处理为中心的服务器端技术来说,缺点是显而易见的。CGI在开发难度、保守性、性能表现来讲,都有不足之处。

● 耗费服务资源太多

CGI是从服务器上调用的外部程序的总称,也就是说,用户每发出一次请求(Request)就需要建立一个新的执行进程,用户送出多少次的请求就要生成多少次通信进程。对小的CGI程序来说,对服务器资源的占用不会有什么问题,但对那些复杂的商业应用程序来讲,有限的服务器资源就有被耗尽的危险,这就是所谓的“资源瓶颈”问题。

对于用户数变动很大的Web系统来讲,资源变动的脆弱性这个缺点可以说是致命的。

● 开发时要注意底层的协议

Perl和C语言并不是专门为Web程序而开发的,CGI开发者在开发中,必须要注意照顾到Web特有的协议(如UTP,HTTP等)。这些不仅仅意味着掌握CGI编程需要一定的技术水平,同时也意味着CGI存在开发瓶颈。

Perl开发的程序里没有“Session”的概念,A网页上的信息经过B网页,准备在C网页上显示时,CGI开发者必须自行设计框架来解决这个问题。

其他的,连现在Web开发中经常使用的“Cookie”,在CGI中也必须将HTTP考虑进来专门编写代码。还有,当开发者想将一系列的程序当成一个项目来组织时,CGI就很难办到了。

● 网页设计与编程开发

Perl也好,C也罢,实际上是通用开发语言,只是将处理结果按照HTTP的规则显示出来而已。所以如果就连一个HTML的“对”都得用print语言将其输出出来的话,则这就意味着,对于开发周期短的Web开发来说,所有作业都得在其中编程。而逻辑由程序员负责,内容由编辑负责,设计由设计人员来分担的这种合作开发模式,在CGI开发中就很难办到了。1.1.3 服务器端脚本轨迹——服务器端脚本

正因为CGI有以上所介绍的这些缺点,慢慢地就不怎么受开发者的青睐了。这时候就出现了被称为CGI后继的技术。PHP就是这些技术之一。下面就PHP是一种什么样的技术,有些什么样的特性做些简单的介绍。

● 脚本语言

PHP是一门初级程序员都可以用来写出有用有效程序的语言,有着逐行顺次进行解释的、很容易重复and-error式的循环,能保证很高的生产效率等优势。性能表现尽管不能和那些能编译的语言相比,但是从PHP4开始,搭载上高性能的脚本处理引擎Zend Engine后,也能实现高速的处理,实际运行时几乎不产生瓶颈问题。在最新的PHP5中,Zend Engine升级到2.0后,处理的效率更高了。

● HTML嵌入式语言

PHP必须嵌入在HTML中才能运行。与HTML有天然的亲和性,只要处理则能写出很优秀的程序。结果直接在HTML中输出就可以了,不需要输出部分的编程,实际的逻辑部分非常短小精悍。

● 容易掌握的高级语言

与Perl、Javascript这些C语言系列的语言很相似,PHP也拥有自己的语言格式。掌握了上述语言的开发人员很容易上手,即使是第一次接触脚本语言的程序员,基本上都能在短时间内掌握它。

现在,PHP中面向对象的思想也得到了强化,对于重复使用性、维护性好的大规模网站也能很容易地搭建了。

● 丰富的程序库

毫不夸张地说,只要是想实现的功能,都能找得到相应的PHP程序库。PHP开发时,将单个功能的程序块进行组合,就能实现复杂的商业逻辑,不用从零开始写那些原始的逻辑了。也正因为这样,初级程序员就能很容易地读懂PHP程序。

● 容易与各种类型的数据库连接

像MySQL、PostgreSQL等免费的数据库,还有Oracle、Sybase、Informix、SQL Server等商用的数据库,以及ODBC等通用的数据库接口等主要的数据库产品接口都内置在PHP程序包中,且可以自由安装或卸载。

最新的PHP5中轻量数据库引擎SQLite也已被内置。只要安装了PHP,就能构筑数据库连接的应用程序了。当然,数据库连接和服务器端技术并非等价,但肯定是个极其重要的优势。PHP和数据库的无缝结合能提供更简便、高级的解决方案。1.1.4 各种服务器技术的比较

上述介绍的PHP构架并不是新鲜的技术。这之前介绍的以Perl、C等为代表的古典的CGI,以及Windows平台的ASP.NET,还有以跨多平台的处理环境为特征的,由Java语言构筑的JSP/Servlet等,都有很广泛的支持。

就服务器端脚本技术来讲,各自的技术特征总是千差万别的。本节选择其中几种典型脚本语言与PHP进行比较,让大家从横向上更好地了解一下PHP。CGI与PHP

正如以前所介绍的,CGI是古典的服务器端技术,在开发的生产性、可维护性、易学性上不怎么让人满意。

然而,PHP本来就是为制作Web网站而定制的语言,功能也是为Web定制的。那些经常使用的功能都作为函数提前准备好了,入门者可以很容易学会。在PHP中出错信息的生成功能也是很充分的,在程序调试时可以充分感受到。

因为PHP已经和Web服务器组装在了一起,因此不用每次生成请求时都生成新的进程了。虽然在Web服务器里组装进了PHP脚本翻译器而运行时显得“重”,但随着现在Web服务器中引进了动态模块的概念后,可根据需要动态载入,这在一定程度上解决了这个问题。ASP.NET与PHP

ASP.NET是在Windows环境下运行的服务器端脚本,在HTML中嵌入被称为服务器控件(Server Control)的“标签”(tag),拥有在服务器端技术中被称为事件驱动模型的独特构架。

在ASP 3.0中抛弃了以前的VBScript、JScript等解释型语言,采用了Visual Basic、C#等编译型语言后,成功地提升了性能,并提供了各种语言都能使用的类库。灵活的数据库应用、强大的文件处理、字符串处理、简便的自定义函数等,都是其用户迅速增加的原因。

但是,就其运行环境限制在Windows+IIS(Internet Information Services)平台的这一点来讲,在普及上还是有很大的局限性的。最近由Mono工程组(http://www.mono-project.com)开发的能在Linux等UNIX系列操作系统运行的,公开源码的.NET环境的出现,给普及带来了一丝希望。从实际使用情况来看,在UNIX环境下广泛使用.NET还有很长的路要走。

然而,PHP原则上在UNIX/Windows/Mac等操作系统上都能运行,从Web服务器产品来说,有Web服务器最大市场占有率第一的Apache,还支持IIS、Sun Java System Web服务器等重要的服务器产品,平台的通用性正是PHP的魅力之处。JSP/Servlet与PHP

JSP(Java Server Pages)/Servlet是具有代表性的Web开发语言Java的服务器端版本。

大家知道Java语言追求“Write Once,Run Anywhere”的开发概念,这在多样化的服务器环境中是非常重要的因素。JSP/Servlet不用选择环境,其代码在不同的环境中能保证很好的移植性。Servlet负责应用程序的逻辑部分,而JSP用于网页显示,彼此分工明确。逻辑部分能够被再利用,从而能保证很高的生产效率,以及可维护性。

但是,Java语言再怎么好用,与脚本语言比较起来,对一般的开发人员来说,还是显得门槛有点高。尽管最近标榜着EoD(Ease of Development容易开发),以及比如JSF(Java Server Faces)、Groovy等新技术也纷纷登场,与追求直观易懂的PHP比较起来,还是需要花更多的时间去学习的。

JSP的分工开发的优势,对那些中小规模的网站来说,优势显得并不明显,然而,PHP在构筑中小规模的网站时拥有更大的灵活性。最新的PHP5.0中强化了面向对象的概念后,构筑大规模的网站时,开发再利用性好,可维护性强的代码成为可能。

表1-1总结了各种服务器技术与PHP的比较。表1-1 各种服务器技术与PHP的比较1.2 PHP的发展

前面在PHP与其他各种技术的比较中,介绍了PHP的优缺点。下面,从PHP的发展变迁的轨迹来论述一下PHP技术。PHP 1.0

PHP与其说是一门独特的脚本语言,还不如说是用Perl写成的CGI包装程序。后来,为了提高性能又用C语言进行了重写。这就是1994年发布的PHP 1.0。这个时候,也只是解释特殊CGI宏的小型引擎,提供给用户在Web网站上开发地址簿、计数器等有限的小功能。PHP/FI 2.0

后来,PHP 1.0中增加了与关系数据库(DBMS)的连接功能,另一方面与HTML表单的解释模块FI进行合并后,这就是被称为PHP/FI 2.0的版本。在PHP/FI2.0中又加入了MySQL支持功能,从此确立了在服务器端处理环境中的位置。正是这个时期,PHP的用户数开始迅速地增加了。PHP 3.0

尽管PHP/FI 2.0不断增加新功能,但它并不是一个很稳定的开发环境。这时候,开始了全面重写PHP引擎的工作,工程的管理人(名为Rasmus Lerdorf)组织了一个虚拟的开发队伍,集合全世界的公开源码的支持者参加到个项目中来。

完全改写后台的引擎后,PHP 3.0与PHP/FI 2.0大部分都不具备互换性。可是性能和稳定性大大地增强了,PHP 3.0的拥护者数量又迅速地大涨了。

国际化的版本就是从PHP 3.0开始的,提供了多国语言的支持,中文版的使用也是从这个时候开始的。PHP 4.0

在2000年5月发布的PHP4中,安装了性能更高的脚本引擎Zend后,成为了性能更好、更稳定的版本。还有引入服务器抽象层的概念后,对各种Web服务器的对应大大增强了。

在追加了Session功能,捆绑了标准类库Pear的基本模块后,PHP从4.0版本开始实装了多字节函数,中文版的对应更完美了。合并了已有的其他模块的功能,周边技术的紧密结合是PHP 4.0的最大特征。PHP吸收了各种支流技术,使之变成一个强大的主流,向更强大的开发环境的发展已成为可能。PHP 5.0

现在的最新版本为PHP5.2.X。2004年7月,PHP5.0.0正式发布,PHP5.0中的Zend Engine升级到了2.0版,包括基本语法在内的各种修改,功能得到了强化。在这些修改中,最值得注意的是面向对象语法的强化。

其实在PHP4已经能进行面向对象编程了,但是,还不能使用接口以及不能使用连接修饰符等,相对来说还是很原始的面向对象编程。从PHP5开始“统一的构造体”,“接口/抽象类的实装”,“连接修饰符的对应”,“提供_autoload,_get,_set,_call特殊函数”,形成了PHP独特的面向对象语法。这样,就可以像用Java等面向对象语言一样进行编程了。

自从在PHP5中导入轻量化数据库引擎SQLite后,连接数据库时就不用安装别的数据库服务器了,只要安装好PHP后,就可以完成这些工作。

其他如新的XML支持套件SimpleXML、Web服务器标准协议对应的SOAP、例外处理等功能以后再慢慢介绍。

PHP的发展史如图1-2所示。图1-2 PHP的发展史1.3 PHP基本运行环境的设定

本节介绍一下本书中例子运行的最低配置环境的安装和初期设定。特别是PHP基本运行环境的设定,对这本书上的例子来说是必不可少的。按照本书介绍的步骤配置好你的环境,是学习本书下面即将展开的实例的基本前提之一。

图1-3显示的就是本书需要的最低限的软件配置图。图1-3 PHP应用程序的运行环境1.3.1 Web服务器

Web服务器接受用户的要求,处理用户要求,然后将处理结果返回给用户,管理这一系列处理流程的就是Web服务器的主要功能。PHP脚本的解析执行引擎就是在Web服务器上运行的。

Web服务器的种类很多,但是从PHP4开始与服务器通信的部分从PHP主体中分离出来,以服务器抽象层这样精干的独立模块形式管理起来了。这样一来,在Apache HTTP Server(Apache)或IIS等各种Web服务器上变得很容易运行了。

PHP引擎的运行机制如图1-4所示。图1-4 PHP引擎的运行机制

本书采用了在Web服务器中普及率最高的Apache。Apache是公开源码的软件。很精干的代码就实现了基本的Web服务器功能。Apache本身的使用方法有很多,功能也有很多,本书中不一一详细介绍了。本书只涉及怎样在Apache上运行PHP,只需要了解Apache的启动、关闭,以及httpd.conf参数的配置就足够了。下面将介绍具体的安装方法。PHP(PHP:Hypertext Preprocessor)

PHP的主体里包含了执行引擎Zend Engine,以及各种程序库、设置文件、PHP应用程序开发,运行所需要的文件。关系数据库服务器

对PHP来说,并不是必须和关系数据库(RDB)在一起使用,程序本来就是以数据处理为目的的,但如果没有高速而严密的、统一管理的数据库的话,编程也就无从谈起,Web编程也是如此。只有利用数据库进行强大的数据库处理为前提才能发挥编程语言的优越性。

现实中有各种各样的RDB产品,本书采用了公开源码的MySQL。MySQL是一个以高速运行为特征的数据库,安定性和可靠性均非常优秀的数据库服务器。MySQL的使用手册可以参照相关网址。PEAR(PHP Extension and Application Repository)

PEAR是用PHP脚本写成的官方类库的一种,有500种左右丰富的程序包,只要一个pear命令就能简单地导入指定的程序包。

第4章以后介绍使用PEAR的例子,本章只介绍使用pear程序包管理工具的安装方法(Linux版除外),而各个例子中需要的程序包,以后各章中会分别介绍。1.3.2 应用程序构架

应用程序构架,顾名思义,就是应用程序运行的基本框架的类库。正如前面介绍的一样,PHP的单体开发生产性是非常高的,开发一定规模的应用程序时,总是会出现在不同地方编写相同代码的情况。为了解决这个问题,也就出现了构架(framework)这个概念,构架就是代替这些固定功能的。

在PHP中可能利用的构架有Symfony、CakePHP、Maple、Ethna等各种各样的产品,本书中采用了标准构架Zend Framework,以下介绍一下Zend的有关知识。开发公司Zend Technologies

Zend Technologies公司是PHP运行引擎Zend Engine的开发商。由于由对PHP内部构造很熟悉的开发者参加了产品的开发,因此和其他数种构架(Framework)比较起来,信赖性要高不少。从Zend公司对Zend Engine的投入来看,今后中断对Zend Framework支持是不太可能的,将来还会继续对Zend Framework版本升级与补丁修正。高度独立性的组件群

Zend Framework是以名为Zend-Controller的前台控制组件为中心的软件构架产品,另一方面也是数据库连接、认证、过滤器功能等各种功能组件形式提供的类库。

这些组件彼此完全独立,都能以独立的类库的形式被使用。比如在不需要构架的项目里,只利用其中的数据库连接功能的情况下,只需要利用Zend-Db部分的类库就行了。

表1-2总结了Zend Framework组件。表1-2 Zend Framework组件一览New BSD License认证

Zend Framework采用了New BSD license的认证方式,New BSD license认证是只要使用者在代码中注明著作权就可以自由地发布,是限制最少的一种认证方式。Zend Framework的源码都是独立编程的,不存在Zend公司以外的著作权拥有者。因为应用Zend Framework构筑的系统在发布时没有任何限制、商用的情况下也安心。充实的开发文档

对入门级的用户来讲充实的开发文档(http://framework.zend.com/ch/)非常重要,zend也提供很多的中文文档,英文不是很好的朋友也可以方便地利用。现在开始应用Zend,朋友建议可以先学习这些文档。

Zend Framework提供了构筑应用程序所需要的几乎全部功能,大家从前面的介绍中应该有所认识了。可以说通用性高、相对的轻量化是Zend Framework的最大魅力。

应用软件构架(Framework)并不是仅仅为了提高开发效率。因为功能单位事先以类的形式进行了分割,当程序变更发生的情况下,需要修改的地方很容易特定。而多个开发者同时进行开发时,分工进行并行开发也变得很容易。另外,系统性编码规则,顺序是固定的。可以避免开发者的不同而产生品质差异。

Zend Framework的各种组件在第4章,Zend Framework的核心狭义上的构架Zend-Controller在第5章进行解释。

必要的软件概要大家应该有一定程度的理解,下面就具体的安装方法、设定步骤,分Windows与Linux环境进行说明。大家可以结合自己使用的环境,参考一下。1.3.3 Linux环境中的基本环境配置

本书所用的Linux环境是以Red Hat Enterprise Linux AS(2.6.9-42.EL)为基础的,当采用不同的版本,或者发布时,步骤与文件的路径会有可能稍有不同,请务必注意。Apache的安装方法

Apache的安装有用RPM包进行安装,以及用源代码进行安装两种形式,本书介绍用源代码进行安装的步骤。

1.下载Apache的源代码httpd-2.2.15.tar.gz

最新的源代码可以从http://httpd.apache.org/download.cgi下载。也可以应用可下载代码的/linux目录中提供的2.2.15版进行安装。Apache经常进行版本的升级,进行环境配置前建议下载其最新的版本。

假设将所有安装文件放置在/downloads目录下(下同),可以进入此目录后,执行下载命令下载最新的版本。下面列出了从建立/downloads目录到最后的下载的命令。

建立/downloads目录,给目录赋予合适的权限:

下载最新的Apache源代码:

如果你没有下载源代码,请把可下载代码/linux中的源代码httpd-2.2.15.tar.gz复制到/downloads目录下。

2.编译,安装

使用tar命令进行包httpd-2.2.15.tar.gz的解压缩。

解压后,会根据版本号做成相应的目录,移动到代码目录,设定编译条件。

--prefix选项是设置Apache的安装目录。--enable-so与--enable-rewrite选项的作用是,分别将DSO扩展模块、Rewrite引擎设置为有效。

Configure命令成功后,就可以以管理者权限来进行安装作业了。

根据环境的不同,安装过程可能要花费几分钟到十几分钟。如果到处理结束都没有出现错误的话,说明Apache被成功安装了。

3.启动Apache

使用下述apachectl命令启动Apache。

但是,这个时候,请一定要确认80端口是否已被其他Web服务占用。如果已被占用,则Apache将不能正确启动。

4.Apache的动作确认

在进行Apache的动作确认的同时,在浏览器显示一下Apache的默认首页(第一页)。Apache的默认首页用下述URL进行确认。

正常安装的情况下,会显示如图1-5所示的网页。图1-5 设置成功后显示的网页

另外,想中止Apache或想重新启动Apache时,请使用如下的命令。后面,在进行修改配置文件httpd.conf或php.ini时,请务必重新启动Apache。MySQL的安装方法

MySQL的安装也有用RPM包进行安装,以及用源代码进行安装两种形式。本书介绍用源代码进行安装的步骤。在本书第3章以后的例子中会用到MySQL数据库。

1.生成新的用户/组

使用root用户也能启动MySQL,考虑到现在的网络安全环境,使用专门的用户应该更安全。使用root权限进行用户注册,这里将用户名与组名都注册为mysql。

2.下载MySQL的源代码mysql-5.1.45.tar.gz

可以从http://www.mysql.com/downloads/下载最新的源代码。也可以应用可下载代码的/linux目录中提供的5.1.45版进行安装。MySQL经常进行版本的升级,进行环境配置前建议下载其最新的版本。

如果你没有下载源代码,请把可下载代码/linux中的源代码mysql-5.1.45.tar.gz复制到/downloads目录下。

3.编译,安装

使用tar命令进行包mysql-5.1.45.tar.gz的解压缩。

解压后,会根据版本号生成相应的目录,移动到代码目录,设定编译条件。

MySQL安装时的configure选项的意义如表1-3所示。表1-3 MySQL安装时的configure选项

configure命令成功后,利用管理者权限进行安装作业。

根据环境的不同,安装过程可能要花费几分钟到十几分钟。如果到处理结束都没有出现错误的话,说明MySQL被成功地安装了。

4.复制mysql配置文件到/etc/my.cnf文件

5.生成新数据库,启动MySQL

在初次安装好MySQL后,需要生成初期数据库。

生成初期数据库后,进行所有权变更的操作。将所有二进制文件设置为root用户所有,数据目录的所有者分配给数据库的所有者(本书为MySQL)。

-R选项是指目录下的所有项目保持同一个设置。

进行了上述设置后,启动MySQL服务器。

6.确认MySQL是否正确的动作

使用mysqladmin命令进行MySQL是否正确动作的确认。如果返回了下述的信息说明MySQL正确动作了。

7.在MySQL中设置密码

在安装了MySQL后,并没有设置管理用户root的密码。所以此处先设置root用户的密码。当然要设置第三方不容易推断的密码了。

另外,启动MySQL客户端,先删除所有没有设置密码的默认用户。MySQL客户端是连接MySQL服务器的基于命令行的客户端工具。

mysql客户端启动时,会要求输入密码,请输入上面设置的密码。

8.导入本书的实例数据库

将本书中使用的实例数据库,导入到MySQL服务器内的samples数据库中,将可下载代码中的文件[/samples/samples.sql]复制到当前目录下。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载