Kohana PHP framework 試玩心得

Kohana 前身叫做 BlueFlame, 是由 CodeIgniter 衍生出來的 PHP framework, 所以要從 CI 跳槽還滿快的 XD 而 Kohana 跟 CodeIgniter 最大的不同就是, Kohana 只能在 PHP 5 上跑。 不過其實… 現在都該換到 PHP5 了啦:p 重點是! Kohana 解決了 CodeIgniter 很多不足的地方。

像是 Namespace 的問題, 在 CI 上如果有相同名稱的 library、Model 或是 Controller 就會衝到, Kohana 則解決了這個問題。 另外在 CI 上如果有自定的 helper 的話, 其他維護者並不容易找出是寫在哪支 helper 裡, 而 Kohana 的 helper 是用 class 來作, class name 的 prefix, 則可以容易辨識出是哪支 helper, 也減少 function name 衝突的問題, 對於維護上方便很多。

另外 Kohana 也提供了 module 的機制, module 擁有自己的 controller, model 跟 view, 可以將程式劃分的更細。例如 Konaha 本身就提供了 Auth module (ACL)。 雖然 CI 也有 matchbox 提供了相同的功能, 但是需要 override CILoader, 萬一 CI 的版本升級, CILoader 有所改變呢? 當然還是比不上 Kohana 內建的好。

而 Kohana 也利用了 PHP 5 autoload 這個功能, 所有的 library 均可以透過 autoload 來自行載入。 還有 Kohana 有 ORM 阿! 話說 ORM 真的是很好用 XD model 只需要 extends ORM, 就不必再寫其他東西了, 最多定一下 hasone, hasmany, belongstoone …等, 就行了。 省了超多時間, 不過開了 Profiler, 實際看一下 Query, hmm… 如果有 Performance 需求的話, 還是自己刻 SQL, 或者用原本的 ActiveRecord 會比較好 XD 可是…ORM 真的很好用阿!

還有 Kohana 除了一般的 Controller 之外, 也提供了 Template_Controller, 可以簡化 Controller 中 view 的處理, 還滿不賴的。說到 View, Kohana 的 View 的處理方式, 真的是不錯阿! 很清楚明暸 :p

還有很重要的一個功能, 開發網站最常碰到的就是表單資料驗證跟處理了, CI 的 validation 很好用, 但是跟 kohana 比較起來, 就顯得很囉唆, rules 跟 fields 是分開設定, 在 kohana 則是在 rules 一次處理掉。 而且也包含了 upload 功能, 可以在 validation rules 中, 直接處理掉 uplaod 的 filetype, filesize … 等, 而不像 CI 除了 validation 之外, 還需要 upload library 來處理上傳的檔案, 協調性就差多了。 相對之下, Kohana 需要照料的事情少了非常的多。

其實 stickeraction.com 一開始是用 kohana 來開發的, 在用 kohana 開發的過程當中, 真的是用的滿開心的, 不囉唆的 validation, Template_Controller 跟 ORM, 還有 media module, 開發起來比起 CI 更快勒!! 不過老實說, 踩了滿多地雷的 ~"~ hmm… Kohana 是由社群在維護, 不像 CI 是由 expression engine 的公司所維護, 也許是這樣, 不該發生的地雷才會那麼大顆吧 XD 所以… 我又花了一個晚上把 stickeraction.com 從 Kohana 整個 port 回 CI 了 :x

不過 Kohana 2.2 也快出了, 到時候一定會在玩一下的 :p 最後… 其實 Kohana 的文件一點都不齊全 ~"~

tzangms

Read more posts by this author.

Subscribe to Oceanic / 海海人生

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!