最近更新: 2006-09-13

Framework of PHP5

Tags: framework agile-method

接觸 PHP 多年,常常有人向我請教 PHP 和 ASP.Net 的不同。基本上, PHP 和 ASP.Net 是不一樣的東西,不能放在一起比較。因為PHP 是一個程式語言 (programming language) ,而 ASP.Net 是一個 framework 。有人說用 ASP.Net 開發 Web 程式很快,可是 PHP 很麻煩。這說法並不正確,如上所言,這兩者是不一樣的。 PHP 雖然和 Web 程式的開發工作緊緊聯繫,但它依然是一個程式語言, programmer 仍然需要處理一些 HTTP/CGI 的細節。在「程式語言」這個基準下,如果沒有 ASP.Net 這個 framework ,單單使用 VB, C# 這些程式語言來開發 web 程式,那可比 PHP 要難上好幾倍了。

觀念澄清之後,接下來的問題就是, Java 有 JSP , C# 有 ASP.Net ,那麼 PHP 呢?長久以來, PHP 並沒有一個普遍的 framework 。我個人相信,這是因為 PHP4 的語言特性不足以支持一個彈性、方便與效率兼具的 framework 實作。 PHP5 解決了這個問題,隨著 PHP5 普及程度擴大,以及 Ruby on Rails 的剌激,可靠的 PHP frameworks 如雨後春筍般爭相浮現。

PHP 目前已有許多 frameworks ,最具官方 (正式版) 色彩的,自然是 Zend 推出的「Zend Framework」,並可配合建構在 Eclipse 的整合開發環境「PHP IDE Project」。此外還有許多各具特色的 frameworks ,可參考「Rails-inspired PHP frameworks」,該文作者列出了 6 種較具代表性的 PHP frameworks 。值得注意的是,這些 PHP frameworks 若非只限 PHP5 ,便是在 PHP5 之下才能獲得較佳效能。這自然是因為 PHP5 的語言特性提供這些 frameworks 良好支援。對 PHP5 還不熟悉的 PHP programmer ,可要加快腳步了。

我個人不喜歡 Synfony ,因為它太過依賴組態檔 (YAML configuration files) ,感覺上就像 Java EE 中 XML 滿天飛的情形一般,讓我感覺不到簡潔性。和 Synfony 相比, CakePHP 簡潔多了, Code Igniter 是另一個更簡潔的 framework 。

Have fun with framework

CakePHP 和 Code Igniter 頗為類似,只是後者主要應付 CMS/Blog 此類需要大量頁面管理而較少表單與作業流程控制的場合,而前者可以應付更複雜的需求。兩者都使用同樣的動態調用概念,透過 http://your_server/controller_class/method/arguments 這樣的 URL 形式,調用對應的 method of controller class 以及 view 。 Programmer 要增加新功能,通常只需繼承基本的 Controller class 設計新的 controller 及 view ,再將其上傳到 server 對應的目錄中即可。這兩種 frameworks 至少應熟悉 Code Igniter ,並閱讀其原始程式碼。你或許不會用這個 framework 為你的企業客戶或有報酬的 case 開發 Web 服務,但你將會從中學習到許多有趣的,且是動態語言 (如 Ruby, PHP) 獨有的程式設計概念。

相關文章
樂多舊網址: http://blog.roodo.com/rocksaying/archives/2143361.html