偶遇 CodeIgniter

在開發程式的路上,開發者無不想要找一個終極工具,能夠輕鬆的開發和維護程式。

使用 PHP,可以讓人很快的開發網頁程式。但是隨著程式的開發,程式的數目變多了,問題就慢慢地浮現了。程式變得難以維護,無法適應需求的改變。當然,也試過不同的寫程式方式,或維護過一些不同方式開發的程式,都很辛苦。前一陣子,因緣際會,知道了CodeIgniter,讓我的程式員的生活產生了改變。

MVC (Model-View-Controller) 是一個早在 Smalltalk 語言的時代就已被提出的作法,在 Java 的環境中,也一直有此方面的發展。但要玩 Java 絕不像用 PHP 這麼輕鬆。直到 Ruby on Rails (ROR) 被提出來,在 PHP 的世界也出現眾多的 MVC 的 framework。

我也不曉得為什麼,在 ASP 和 ASP.NET 的環境下,找不到這一類的 MVC 的 framework,雖然微軟有提出 ASP.NET MVC,但 Visual Studio 是個超級龐然大物,實在讓人不想領教。最近,單位主管同意使用 PHP 開發,我終於能擺脫 ASP 和 ASP.NET 的羈絆。

會找到 CodeIgniter,是因為接手的程式是用 Smarty 的樣版引擎,上網搜尋 Smarty 的相關資訊,找到有人將 CodeIgniter 與 Smarty 結合使用,因而注意到 PHP 的 framework。PHP 的 framework 非常非常的多,我心中屬意的是輕量 (lightweight) 的 framework,只要使用 notepad 就能開發,然後又有廣大的使用群。然後,就這樣決定使用 CodeIgniter。不過,有趣的是,在我熟習了 CodeIgniter 之後,反而決定將 Smarty 完全移植至 CodeIgniter,不再使用 Smarty。能夠順利地將 Smarty 完全移植至 CodeIgniter,也是因為 CodeIgniter 的彈性,可以直接將原來的 PHP 程式 include 到 controller 中,然後再進行 refactor,慢慢整理成對應的 model 和 view。

初次接觸 MVC 的架構,要由 procedure 的想法轉變成 MVC 的想法,並不是很直接。最快的方法是買一本書來抄,但在書局中,舉目望去,根本找不到有 MVC 字眼的中文書。幸好,有書局進口 <Professional CodeIgnitor> 這本書,但簿簿一本要台幣一千多元,與中文書相比之下,有點貴。但話說回來,假如這本書能讓我少花一天的摸索,就可以和我一天的收入相抵,這是值得的。幾經思考,為了快速入門,最後還是買了。買回來之後,用最笨的作法,下功夫照著 <Professional CodeIgnitor> 書中的實例,一個字一個字的照打一遍。就這樣逐漸對整個架構有了一個完整的概念。在這之後,再試著改寫一個小程式。然後,在十月中,整整一個月,埋頭苦幹,用 CodeIgniter 完成了一個網頁程式,包括簡單的後台維護,也很容易的套用美工的版面。心得是使用 MVC的模式開發程式,真的是很好用。

使用 CodeIgniter 開發了一些程式,覺得用 MVC 的方式來開發程式,真的很不錯。至於我會不會改用其他的 framework,這很難說。至少,有一個同樣引起我注意的,Yii,好像普遍的評價還在 CodeIgniter 之上,只是門檻較高,學習曲線較陡,等我有空再說吧!