Kohana是一款基于CodeIgniter的 PHP5 框架,其與 CI 最大的區別便是Kohana完全采用 PHP5。

2007 年 6 月 1 日,CI 社區用戶 Todd Wilson (Tido)發布了 BlueFlame 1.0 的帖子。BlueFlame 1.0 正式發布,團隊成員有九人,其中包括 Todd(原團隊 lead developer)、現在 Kohana 的 lead developer、以及本人。該發布貼引起了 CI 社區用戶的廣泛關注。然而由于 BlueFlame 團隊事前沒有與 CodeIgniter 團隊進行溝通,導致一些理解上的小插曲,包括 Rick (CI 的祖父)要求 BlueFlame 團隊停止使用 CI 的社區資源來發布 BlueFlame 相關的信息,以及對 BlueFlame 源代碼中的授權部分表示疑義。

最終通過 BlueFlame 與 CodeIgniter 團隊的協調溝通,雙方的小小誤解很快便被解化。Rick 在此期間提到 BlueFlame 名稱的潛在版權問題,于是 BlueFlame 幾天后便正式更名為 Kohana,并注冊了現在的官方網站:kohanaphp.com。

在 BlueFlame 1.0 之后,Kohana 團隊一直沒有發布新的版本,之后整個項目一度處于僵化期。盡管如此,trac 上還是有更新進度。在 Todd Wilson “消失”了一陣子后,成員之一 Woody Gilk (Shadow Hand) 接下重任,擔當團隊 leader。

之后 Woody 聯絡本人,希望本人承擔 Kohana 官方網站以及 logo 的設計制作。論壇上仍然可以找到當時我發的帖子(內有網站以及 logo 的草案)。可惜由于時間的因素,我最終沒有將設計草案轉化為 HTML??上驳氖?,Geert De Deckere 之后設計了一個相當出色的方案,這也就是大家現在所見到的 Kohana 的官方網站。 :)

2007 年 11 月,經過了團隊成員以及社區用戶的努力,Kohana 終于發布了 2.0 版本。

下面我來翻譯一下 Wikipedia 對于 Kohana 的介紹。

歷史

Kohana 是基于 CodeIgniter PHP 框架開發的。

開發 Kohana 最主要的原因是 CI 對于 bug 的修復和處理用戶提交的建議所需的時間過長。許多 bug 在用戶報告后很久才會納入到新版本中,甚至一些 bug 一直沒有被納入。另外,由于 EllisLab 是 CodeIgniter 唯一開發者,部分用戶對于框架的開放性產生異議,他們希望框架可以更自由開放,從而使社區對框架的發展產生一定的影響。

Kohana 與 CodeIgniter 的區別


  • 嚴謹的 PHP5 面向對象編程。優勢:可見性保護、自動類裝載、超載、接口類、抽象類以及單件類。
  • 延續 CodeIgniter 的設計模式。CodeIgniter 的用戶能迅速的理解 Kohana 的架構和設計模式。
  • 社區向,而非商業向。Kohana 是一款基于社區的作品。Kohana 的開發者們來自世界各地,有著各自的天賦。這使得開發速度得以提高,并在短時間內提供bug修復以及反饋用戶提出的建議。
  • GET、POST、COOKIE 以及 SESSION 數組得到改進。Kohana 不對全局數據做讀取限制,但依舊提供與 CodeIgniter 相同的數據過濾以及 XSS 防護。
  • 層疊式資源、模塊以及類繼承??刂破鳌祿P?、庫、助手以及視圖均能夠在系統中的任何地方進行載入。程序的配置選項可被繼承或覆蓋。
  • 無命名空間的沖突。類均添加了如“_Controller”之類的后綴,從而使得用戶的控制器和數據模型可被同時同地裝載。
  • 真正的自動類裝載。這包括庫、控制器、數據模型以及助手。與 CodeIgniter 不同,Kohana 的自動裝載是真正意義上的動態裝載,而并非預先裝載。
  • 助手為靜態類,而非函數。例如,在 CI 中使用的 form_open(),在 Kohana 中為 form::open()。
  • 庫驅動以及 API 的一致性。庫能夠使用不同的驅動來處理不同的外部 API。例如,session 的儲存有數據庫、cookie 和 native 幾種,但它們均使用相同的接口。這使得庫可以不斷的添加新的驅動,但不會影響到 API 的一致性。
  • 強大的事件處理器。Kohana 的事件可被動態的添加、替換或刪除。這使得用戶能在 Kohana 執行的過程中動態做更改,而不影響原有的系統代碼。


特性


  • 高安全性
  • 輕量級代碼
  • 學習周期短
  • MVC 設計模式
  • 100% UTF-8 兼容
  • 松弛耦合架構
  • 易擴展性


技術


  • 嚴謹的 PHP5 面向對象編程
  • 用 SQL 助手實現簡單的數據庫抽象層
  • 多 session 驅動(native、數據庫、cookie)
  • 動態事件處理器