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 CI_Loader, 萬一 CI 的版本升級, CI_Loader 有所改變呢? 當然還是比不上 Kohana 內建的好。

而 Kohana 也利用了 PHP 5 autoload 這個功能, 所有的 library 均可以透過 autoload 來自行載入。 還有 Kohana 有 ORM 阿! 話說 ORM 真的是很好用 XD model 只需要 extends ORM, 就不必再寫其他東西了, 最多定一下 has_one, has_many, belongs_to_one …等, 就行了。 省了超多時間, 不過開了 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 的文件一點都不齊全 ~”~