Zend Framework甫于日前释出正式版,《PHP Smarty样版引擎》作者朱建志将它应用在实务中,体会到不少该框架的魅力与限制。
朱建志(JaceJu) |
在众多PHP开发框架中,ZF(Zend Framework)的发展,长期以来一直受到众人瞩目,主要是因为设计者是PHP官方团队,让它拥有得天独厚的魅力。
不过相较于其它PHP框架,ZF正式释出的1.0版才刚于七月份推出,发展步调慢,功能也相对简单。让人不禁好奇,除了特殊身世之外,还有更值得期待的地方吗?
《PHP Smarty样版引擎》一书的作者朱建志(JaceJu),花了许多时间留意Zend Framework的发展,并在最近的开发项目中导入了ZF,这是一个机会,他也得以深入了解ZF的特色所在,以及实作上的适用性。
问:在三月份时,你曾在部落格中呼吁大家别在正式项目中用ZF,现在却将它用在实际的开发项目中,当中的转折点在哪里?
答:当时ZF架构还在调整,例如本来使用前需要include一个Zend.php的程序,后来改用三个类别来取代Zend.php的工作。像这样的情形,如果冒然用在正式的项目中,可能会导致与后续ZF的版本不兼容,因此当时我认为还不适合使用。
不过ZF到RC版的时候,其实架构就已经底定。因此在七月释出 1.0.0 的版本时,我就认为时机成熟了,也将它用在自己的项目中。
问:从你使用的经验,ZF的优点在哪里?
答:ZF有两大优点,一个是它有完整丰富的文件,让开发人员容易上手。另外一个优点是纯PHP5的架构,不用背负PHP4兼容性的包袱。
就我个人看法,ZF代表官方对于PHP5技术潜能的展现。过去许多人带着PHP4的观念来使用PHP5,没办法展露PHP5的优势。而ZF无疑是PHP5技术的最佳典范,许多PHP5独具的特性,在ZF当中展露无遗。
问:在你这次的项目开发中,ZF发挥了什么样的作用?
答:ZF和其它强调快速开发框架(例如CakePHP)不同,它并未具备自动化与制式化的目录架构来加速建置。不过以我的使用经验,自动化的方式好像黑箱作业,比较难知道它做了什么,不容易调整它的架构。
而ZF的特色是依循PHP5的语法与对象导向架构,因此对于它的来龙去脉容易掌握。在我们的项目中,除了运用了ZF的MVC架构和它建议的目录结构,我们 又在这个基础上加入自己的框架,建立一些专属的模块、套件,这些都是我们实务中会反复用到的功能,日后建置新项目时,也可以节省重复开发的时间。
问:有人常说ZF其实只是类别库的集合,称不上是个完整的框架?
答:的确有人将ZF称之为PEAR2(PEAR是另一套知名的PHP类别库),不过ZF开发团队成员Bill Karwin明白指出,ZF不会只是一堆类别库的集合。
就我自己的看法,ZF在项目产生与快速开发上,的确都还有很大的进步空间,而它发展速度也没有那么快,不过在质量和发展性上,ZF相当可靠。其实 框架的使用,除了节省开发时程,另外一个目的是提供团队开发的标准。不论是在开发阶段或是维护阶段,套用框架的标准都能够减少团队沟通的成本,而ZF在这 点上相当称职。
值得注意的是,PHP的整合开发环境工具Zend Studio也是ZF发展上的利器。ZF虽然不依赖Zend Studio也能开发,不过这次项目中,我第一次使用Zend Studio,在开发与除错方面都带来不错的效率,日后Zend Studio与ZF如果结合得更完整,像是按个「新增项目」,就能将ZF所需的目录结构建置完成,也许ZF的使用规模会发展得更迅速。
问:就你自己的使用经验而言,ZF现在有哪些不足的地方?
答:ZF目前在Ajax上着墨较少,没有像xajax这种无接缝开发模式,不过还是可以透过第三方的JavaScript函式库,像是jQuery或Prototype.js辅助,做到Ajax的效果。
另外有些常用的辅助器,像是缩图、上传功能,ZF也没有提供,这些就必须自行开发。
问:ZF在架构上比较简单,相对来说,是不是也比其它框架容易入门呢?
答:这倒也未必。想要学会或运用ZF,对PHP5的了解必须有一定的程度才容易掌握。例如PHP5有「抽象」(abstract)的概念,如果不知道这些观念和语法,在使用时一定会碰到障碍。
换个角度来说,透过ZF来学习PHP5其实也是不错的路径