ARES資通電子報

技術交流

Zend Framework 應用程式開發 — 入門篇

文 -Dennis

引言
在一月資通電子報「Improve Performance with Zend Data Cache」文章討論如何提高 PHP 應用程式性能。介紹了如何在 Zend Server CE 版本設定相關參數來提高性能。從此篇文章開始,將討論如何用 Zend Framework 架構自己的應用程式。但前提是,您已經掌握了 PHP Programming 及 OOP 的技能。

首先,讓我們先簡單介紹所謂的 “框架(Framework)" 和 “庫 (Library)” 有何區別以及目前流行的 PHP Framework。

何謂 Framework?
顧名思義,框架就是:某特定應用領域(Domain)中,程式間共同的結構. 讓該領域的程式設計師們依共同的結構來開發程式,使程式間具有一致性,增加了程式的清晰度,以降低程式的設計與維護費用。

何謂 Library?
所謂庫就是在應用軟體開發時相關函數或是子程序的集合。它們是區别于可執行程序,不是獨立的程序,而只是“助手”代码。提供一個易於管理的位置,來調用通用的函數(Function)。 比如一些可以重用的 function 或是子程序,我們便會把它歸納出來做為應用程序的庫。

Framework 和 Library 區別

框架(Framework) 庫(Library)
目的:讓程式設計師衍生出具體的類別 (Class),衍生時可以修改 class 才產生物件(Object)。 目的:讓程式設計師拿現成的類別(Class)來產生物件(Object Instance),類別(Class)通常不會預留空間給程式設計師發揮。
框架中的類型別函數常會呼叫應用程式中的函數。 應用程式的函數(Function)可以呼叫庫中函數(Function),反之則不可以。
框架中類別(class)之間預設了物件(Object)之間互助合作的關係。 類別(Class)之間是獨立的,並未設定物件間的相互關係及溝通方式。
物件(Object)常含預設行為(Default Behavior),預設行為可以讓程式設計師根據需要修改。 物件(Object)的行為(Behavior)皆是固定的,程式設計師無法修正。


現在很多人已經把 Framework 和 Library 混為一談,從上面的描述來看,其實兩者的區別還是很大的。目前 PHP Framework 有數十種,其主要功能對比請看 http://www.phpwact.org/php/mvc_frameworks,還有國內的一些 Framework 未列入其中,像 ThinkPHP , QeePHP。每個 Framework 都有自己的優缺點,可以根據自己的需求來選擇合適的框架。

開始
Download & Install Zend Framework

1. 請到下載最新版本。
2. 解壓後,把 Zend 資料夾放到應用程式的include path 中,像其它 Library 一樣,能夠 include 得到 Zend 資料夾就可以。

Tips:
建議下載安裝 Zend Server CE 版本,安裝完成後,其中包含 Zend Framework,相關路徑也會自動設置好。

創建第一個 Zend Framework 專案
創建專案有兩種方式, 一種是用 Zend Studio 的嚮導的方式,另外一種是用 Zend Tool 的命令行的方式創建,本文以後一種方式介紹。

解壓 Zend Framework 後,在 bin 下有 zf.sh 和 zf.bat. zf.sh 是用於 *nix 平台,zf.bat 是用於 Windows 平台(在命令行窗口中 cd 到 zend framework bin 資料夾下執行下面所提及的指令)。本文以 Linux 環境介紹,Windows 下類同。

在 Ubuntu 發行版本中直接用
 sudo apt-get install zend-framework-bin
安裝 zf 指令,或是
 alias zf.sh=path/to/ZendFramework/bin/zf.sh
創建專案指令
zf create project myproject
具體指令說明請輸入 zf ? 就可以列出所有選項。

下完指令,系統會自動創建 Zend Framework Based Application 資料結構,像如下這樣:

1. myproject
2. |-- application
3. | |-- Bootstrap.php
4. | |-- configs
5. | | `-- application.ini
6. | |-- controllers
7. | | |-- ErrorController.php
8. | | `-- IndexController.php
9. | |-- models
10. | `-- views
11. | |-- helpers
12. | `-- scripts
13. | |-- error
14. | | `-- error.phtml
15. | `-- index
16. | `-- index.phtml
17. |-- library
18. |-- public
19. | |-- .htaccess
20. | `-- index.php
21. `-- tests
22. |-- application
23. | `-- bootstrap.php
24. |-- library
25. | `-- bootstrap.php
26. `-- phpunit.xml

結語
Zend Framework 是PHP 這門語言官方所出的一個框架,裡面運用了大量的設計模式,相對其他小型的 Framework 來講,它可能算得上是重量級或者說是企業級。其內容也比較多,學起來可能稍有難度,不過,其完善的文檔和官方的一些教程可以幫助我們快速入門。其 Source 完全公開,也有利於我們更深一步的研究。限於篇幅,本次討論的內容就到這裡,下一篇我們將討論 ZF 資料夾結構及如何來佈局。

參考資料
[1] << Google Android 應用框架原理與程式設計 36 技>> 2008.10 高煥堂 先生著
[2] Zend Framework 官方網站 http://framework.zend.com

>>回電子報首頁