朱建志(JaceJu)
《PHP Smarty樣版引擎》作者,長期留意包含Zend Framework等Web開發的相關動態。曾參與7-11 Unimall、燦坤網路旗鑑店、Toyota等網站專案開發,現為哇寶國際資訊技術經理。


在眾多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其實也是不錯的路徑。整理⊙黃天賜


Advertisement

更多 iThome相關內容