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)
- 動態事件處理器