作者foxzgerald (O⊥M)
看板PHP
標題[情報] PHP Framework
時間Sun Dec 17 18:17:54 2006
[推薦使用的 PHP Framework:
Code Igniter
http://www.codeigniter.com/ ]
因為很懶,所以一直想找捷徑來協助專案開發。我試用過了好幾
套的 Framework,如: Zend Framework, Zoop, Seagull, CakePHP,
Symfony, PRADO.等。其中不乏實作 Ruby on Rails 快速開發方
式的 Framework。 Ruby 的開發方式很炫、很快,或許有天會跳
槽過去 :P
有許有天會學 Ruby,但不是現在。時間是個現實的問題。老闆並
不會給一兩個月的給薪假、讓我去熟悉一套 Framework。
我認為合適的 Frameworks該是架構於 PHP學習曲線上的一個延伸
應用,換言之,我希望只需熟悉 PHP這 Script Language 便可駕
輕就熟地使用;而實作 RoR的 PHP Frameworks卻讓我感覺自己在
學新的語言。
我暫時放棄那些實作 RoR 的 Frameworks,畢竟是另外一條相對
昂貴的學習曲線,有違我對 Frameworks 的期許。於是我轉向
Zend Framework, Zoop, 和 Code Igniter這類以 PHP為主,而
非 php code generate scripting的 Frameworks。
Java 和 PHP 都是開放結構的語言,但總感覺 PHP社群不如 Java
『團結』。曾有人做過這樣的評論:『在 Java 的世界中,當有人
開發出輪子之後,其他的爪哇人便拿來做車子;在 PHP的世界中,
每個人都在開發輪子。』
或許多樣性是 PHP社群的特色,這對程式設計的愛好者(寢室電腦
前的我)是個福音,因為總是有新的玩具可以玩;然而這對程式設
計的奴隸(辦公室中的我,囧)而言,這是撒旦的詛咒。
跳脫加班的無限迴圈,是種迫切的渴求... // break;
比起JAVA,PHP幾乎是無政府狀態。很高興繼社群自主的開發 PEAR
和 PECL後,作為 PHP開發母體的 Zend終於挺身做出 Zend Framework。
這讓 PHP的專案開發不再天馬行空,而是能夠能夠透過重用(re-use)、
或延伸「經驗證過(proved method)」的「輪子」。這讓 PHP支援物
件導向撰寫方式,多了實效與誘因。
[不再反覆重新開發輪子]
做為一個促進人類文明的貢獻者,未必要同愛迪生總是在發明新玩
意。需要燈時,去便利商店就可以買到,實在沒必要重新發明。為
了解決相同的,或許已有前人留下了知識和經驗,如果他們沒法累
積,那麼歷史便如同荒漠般悽涼。
曾有部天書--Design Patterns--為程式設計師帶來天啟:
你們的知識和經驗是可以累積的;並且它是可以重用的(re-use)。
該書大概歸納分析了20多種的樣式,每種樣式都是前人為了解決某種
類型的問題而思考出的解法。該書作者(們)的說:樣式只會更多、不
會更少,並且會有更好的方法。
但畢竟前人留下的 Pattern只是種抽象層次的概念、觀念而已。在實
際的程式碼被撰寫之前,她就像相簿中的正妹一樣虛無飄渺。最好是
當我產生某種意念(not 淫念)時,程式碼就順應產生--至少不要讓
我每次都花很多精力處理別人已經解決的問題/高重複性的細節。
在了解物件導向之前,我多以 "ctrl+c & ctrl+v"法來重用程式碼,
雖然有使用「重用」的概念,但是專案整體卻沒省多少時間--省下
的時間都拿去抓一些奇怪的 bug。這主要是因為之前的程式碼是針對
特定的問題,而非「通用」的解決方式撰寫,因此在專案間複製貼上
程式碼,需要修改的地方可能很零散、不容易整理。
藉引入 Libraries 或 Packages,這類「通用」的函式庫,我們可以
重用已開發的 Functions 或是 Classes;使用這些經驗證的 Functions
和 Classes ,程式的可靠度不僅大大提升、也省了重新設計某種常用
類別(如:資料庫連線類別)的時間。
Frameworks是經開發、並組織過的函式庫,目的是為了協助軟體的開
發。善用 Frameworks最大的好處是可以避免為了一些瑣碎的程式碼
加班,早點下班去約會。
提了那麼多...
我想推薦一套 PHP 的 Framework 給大家玩玩。
Code Igniter (
http://www.codeigniter.com/)
是我目前用過最棒的 Framework。它有豐富的參考文件(well-documented)、
支援 php4 和 php5、並內建了許多實用的 helper, plugin ...
此外可以輕易的自行擴展它的 lib
然而使用上需對「物件導向」與「Model-View-Controller」的設計樣式有一
定的熟練度。
如果已經熟悉 OO 和 MVC 的概念與實作方式,那麼應該會發現這套 Framework
的學習曲線,剛好緊接著 PHP - 大致上都是對現有的 PHP基礎做完全的延伸。
就連 View 的部分,也是以 PHP scripting 為主,不需要學習其他樣板引擎(
如:Smarty)的 template 語法(如果有需要,可以自己另外掛去)
快而有效,是我對 Framework 和感冒藥的期許。
這套 Framework 恰巧滿符合我的期望。
PS: 網站上可以點選看看 watch in action,它以影片展示 Framework
的開發方式;看過之後可以抓到 MVC 的概念和 framework大致的
使用方式。另外,可以看看 document (Read the User Guide)
裡頭那豐富的範例與解說 :)
--
「640K ought to be enough for anybody.!」
- Bill Gates -
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.199.121
推 PsMonkey:雖然看不太懂,不過還是來推一下... 12/17 19:43
推 foxzgerald:(讓人看不懂 >"< )... 是觀念有誤嘛? 還是文辭不通順? 12/17 20:13
推 PsMonkey:大喊:我沒寫過 PHP... 這個理由夠充分了吧 [挺] 12/17 20:32
推 rushcat:雖然我也看不懂 但也要推一下!!! 因為是新手...XDDDD" 12/17 20:49
→ foxzgerald:大家都從新手學起的阿 XD 12/17 20:53
→ ileadu:ㄟ我也想用,但是看不懂別人寫的東西,只好自己也來寫一個 12/17 21:07
※ 編輯: foxzgerald 來自: 140.119.199.121 (12/17 22:04)
推 foxzgerald:我修改了一些內容,希望內容能夠更通順流暢 12/17 22:05
→ foxzgerald:我用這 framework 大概一個月了,期間寫了兩個小專案 12/17 22:06
→ foxzgerald:如果有什麼問題,可以一起討論 :) 12/17 22:08
推 superGA:大推這篇!! 我正在尋找framework 12/17 22:41
推 nightmarelee:推一下!其實我自己也有在包自己的Framwork..... 12/17 22:44
→ nightmarelee:我現在自己包的東西真是超級陽春 0.0 12/17 22:45
→ nightmarelee:\看完這套的功能 12/17 22:46