2009年12月21日 星期一

CakePHP教學 on OSX(一)開發框架:CakePHP vs. RoR

網站開發語言選擇

RoR (Ruby on Rails)是新崛起的網站應用開發“框架(framework)”,以能迅速開發網路應用聞名。但對於已經習慣了PHP語法的我來說,Ruby語言實在過於簡化,而且依賴很多特殊的“符號(如<, ::, ?, @)”以及對於整個程式語法都很不習慣。加上Rails框架設計野心很大,整體架構也很龐大,很多魔法般的應用讓人對於整個MVC框架中,指令與資料的來龍去脈難以掌握。因此即使花了幾個月斷斷續續K了“敏捷網站開發(Agile Web Development with Rails)”還是沒看完,對於RoR的整體架構還是如入五里雲般,更別提什麼敏捷開發了。因此,不僅又回頭考慮,是不是該回頭好好研究比較熟悉的PHP程式,然後找一個好用的框架如ZendCakePHP來應用。

PHP語言也許不如Ruby的簡潔與完全的物件導向,但畢竟發展時間比較久,多數大型網站的程式還是使用PHP而不是Ruby。此外也考慮到,AMP(Apache, MySQL & PHP)在多數Linux為基礎的網路儲存伺服器(NAS)上還是主流。拿一台內建AMP的簡易的NAS,如SynologyQnap的產品作快速雛形網站測試,然後再搬遷到實際的網路伺服器,效率應該也不會比在伺服器上架構RoR差。更何況支援AMP的網路供應商,要比起RoR來得多很多。因此,選擇PHP來開發網站,現階段來說還是有很多優勢,尤其是對於已經熟悉PHP語法的人來說。

程式架構的選擇

在短暫的RoR學習中,了解它有幾項設計特性:
  1. 是考慮到資料庫的獨立性而不依賴特定的資料庫程式;
  2. 是資料架構(schema )設計與資料庫遷移(migrations)的便利性;
  3. 避免轉寫重複或類似功能的程式碼;
  4. 考慮未來發展大型網站的擴充性等等。
以上這些特性,都是其他程式框架發展可以學習的優點。而在PHP程式框架中,學的最徹底的大概就是CakePHP。像是搭鷹架(Scaffolding)的方式,寫一行程式就完成資料庫的CRUD(Creat, Retrieve, Update & Delete)功能,以及自動地由資料模型產生出程式碼的腳本等功能。在嘗試學習過一陣子RoR感到挫折之後,回頭看到這些CakePHP的功能與熟悉的PHP語法,可以說是倍感親切。

不過可惜的是,CakePHP的英文書不多,中文資訊更是不足,正體中文書好像完全沒有,台灣的使用者好像也不多。官方的文件本身就有很多部份沒說清楚,中文版更是殘缺不全。一堆API的文件是用外掛自動產生的內容過於簡短,缺乏像PHP官方網站上的應用範例,而許多由網友撰寫的範例則是放在麵包店(bakery)裡。這些因素,造成CakePHP這塊美味的蛋糕,在台灣好像一直乏人問津的樣子。

但是經過這幾天實際的嘗試學習時,還真的是覺得甜美無比。尤其是在OSX上,使用MAMP這個簡易的AMP伺服器,以及Eclipse為基礎,對OSX系統優化提升以執行效率,搭配OSX優美界面版的免費IDE:Aptana。發現只要經過適當的調教,可以讓CakePHP的開發,在Aptana裡如RoR般簡單,命令列指令也少得多了。

接下來解說在OSX10.5/10.6上,如何整合MAMP,Aptana與CakePHP,進行網站開發。

沒有留言:

張貼留言