开篇
这不但是Zend Framework的入门教程,还是对ZF应用层面的一个深入解读。希望带给大家一次愉快的学习过程。
1,PHP发展现状—面向过程和面向对象
PHP的发展也不是一帆风顺:从2000年左右PHP3.0的风行,到2005年PHP一度陷入低谷,再到现在PHP的再度崛起,PHP走过了一条曲折的道路。PHP从5.0开始,面向对象的功能趋于完善,然后是Zend Framework的发布,能够看出Zend公司向企业开发市场进军的意图和雄心。
PHP在4.0之前,主要以面向过程的开发为主,代码中包含着大量的系统函数和用户自定义函数。但是即使PHP5.0之后充分考虑了对类和对象的支持,但是大多数程序员的代码中真正应用对象的时候并不多,程序员还是习惯像ASP一样书写结构化的面向过程的代码。面向对象的好处并没有被大家充分挖掘出来。
2,框架的概念
框架就是提供一种可以在多个应用程序中使用的设计。所有应用程序都有大量通用的基本的东西,比如类与数据库的接口、某些程序逻辑、应用程序呈现给用户的内容等等。如果大家编写过许多 PHP 应用程序,就会知道这些东西是什么。大家可能编写过一组函数,从数据库中读取数据,或向数据库中写入数据;可能已经使用过诸如 Smarty 之类的模板引擎。如果大家编写过很多应用程序,则可能一次又一次地做过相同的某些工作。有时还会将一个应用程序中的代码复制、粘贴到另一个应用程序中。
框架专门用于为这些常用的操作(数据库交互、表示层、应用程序逻辑)提供结构,以便程序员可以花费更少的时间来编写数据库接口代码或者表示层接口,而花费更多的时间和精力来编写应用程序本身的业务逻辑。以这种方式分解应用程序,这种架构被称为模型-视图-控制器(Model-View-Controller,MVC)。模型指数据,视图指表示层,而控制器指应用程序逻辑或业务逻辑。(MVC的具体概念和解释大家可以上网去搜索)。
3,框架选择—向企业开发市场进军:Zend Framework(简写为ZF)
每种语言几乎都有若干个框架可用。选择刚好满足业务需求的框架可能有点为难,但是选择框架时应当要求其节省的时间和精力越多越好。如果一个框架工作得很好但是耗费大量的支持成本;或者即使易于支持,但是起到的反作用大于正面辅助开发作用,那也不是一个好的框架。如果一个框架十分“优雅”,但是在支持和开发中问题频发,那么这个框架也是没有任何用处的。
选择框架时,要考虑客户、程序员和所有相关人员的意见。并且在评估时,考虑到各种影响。还要进一步考虑项目要求,看是不是真的需要一个框架。框架不是必需的,即使不使用框架,也完全可以编制应用程序。
我们需要考虑:框架会对项目有帮助么?它是否会节省每个人的时间和精力?应用程序在框架中是否会执行得更好?……如果所有答案都为否,那么使用框架只会把事情变得复杂。
目前流行和比较流行的PHP框架已经不少,例如Zend 框架,CodeIgniter,symfony,CakePHP,FleaPHP等。选择学习一个框架可能全凭个人爱好,但从发展前途和流行程度考虑,我选择了Zend公司自己开发的框架Zend Framework,主要原因是ZF系出名门,并且是正宗嫡亲。并且ZF和现在流行的Ruby On Rail(RoR)在设计上有许多相似的地方,学习ZF对以后从事RoR开发可能也会有所帮助。
4,学习ZF必须的软件和推荐的环境
所有软件的学习(和开发)都必须从搭建环境、安装软件开始。本次也不例外。虽然这些工作经常是系统管理员的分内工作,但是作为程序员,亲自做这些工作,熟悉软件的环境搭建、配置,会对程序开发带来很大的好处,因为环境配置有时和代码有直接的关系。
可能不同以往的是,由于我们是在开源的大环境下工作,所以我们的软件来源就是去网上下载。虽然PHP是“LAMP”(Linux、Apache、mySQL、PHP)的一员,但是在学习和开发时,一般习惯在Windows下进行,原因是Windows使用方便,并且在Windows下开发、在Linux下部署,可以检验代码在不同OS下的表现。
ZF学习强烈建议在Apache环境下进行,原因以后会重点讲解。在Apache下调试完毕,可以在IIS下测试—IIS同样需要做额外的配置,以后也会重点讲解。同样强烈建议在Apache下而不是在IIS下,开发和部署实际的软件项目。
5,需要的软件:
Windows Server2003+SP2
mySQL for Windows:一般和Windows安装在一台机器上。也可以不在同一台机器上,也可以是mySQL for Linux。下载地址:http://www.mysql.cn。
Apache for Windows:Apache现在的版本是2.2以上版本。下载地址:http://httpd.apache.org。
PHP及其附属软件:本教程用PHP-5.2.5。安装了ZendOptimizer-3.2.6-Windows-i386.exe。下载地址:http://www.php.net/downloads.php。
Zend Framework:Zend Framework 要求PHP 必须是5.1.4 或以后版本,建议最好是5.2.2或以后版本。1.5.2是ZF的最新版本。我的教程是在ZF1.5.1下调式的,与ZF1.5.2差别应该不大。下载地址:http://framework.zend.com