codeigniter

codeigniter

CodeIgniter 是一套小巧但功能強大的、給 PHP 網站開發者使用的 Web 應用程序開發框架和工具包。它為組織提供了足夠的自由支持,允許開發人員更迅速地工作。

簡介


CodeIgniter 是一個簡單快速的PHP MVC框架。EllisLab 的工作人員發布了 CodeIgniter。許多企業嘗試體驗過所有 PHP MVC 框架之後,CodeIgniter 都成為贏家,主要是由於它為組織提供了足夠的自由支持,允許開發人員更迅速地工作。
自由意味著使用 CodeIgniter 時,您不必以某種方式命名資料庫表,也不必根據表命名模型。這使 CodeIgniter 成為重構遺留 PHP 應用程序的理想選擇,在此類遺留應用程序中,可能存在需要移植的所有奇怪的結構。
CodeIgniter 不需要大量代碼(1.6.2 版本僅為 2.8 MB,其中的 1.3 MB 是可以刪除的用戶文檔),也不會要求您插入類似於PEAR 的龐大的庫。它在 PHP 4PHP 5 中表現同樣良好,允許您創建可移植的應用程序。最後,您不必使用模板引擎來創建視圖 — 只需沿用舊式的 HTML 和 PHP 即可。
CodeIgniter 是一套給 PHP 網站開發者使用的應用程序開發框架和工具包。它提供單的介面和邏輯結構,其目的是使開發人員更快速地進行項目開發。使用 CodeIgniter可以減少代碼的編寫量,並將你的精力投入到項目的創造性開發上。
CodeIgniter是由Ellislab公司的CEORickEllis開發的。其核心框架是為這個程序特別編寫的,而其他很多類庫、輔助函數和子系統則來自於RickEllis和PaulBurdick編寫的內容管理系統ExpressionEngine。來自RubyonRails的靈感啟發我們創造了一個PHP框架,並且將框架的概念引入到網路社區的一般意識中。
最新版本:CodeIgniter 當前穩定版本是 3.1.9 。
CodeIgniter入門非常容易,而且有很全面的中文版用戶開發手冊,在官方網站上可以了解到更多內容。

特性


開發框架優秀與否與它有多少特性沒有太大的關係。你從特性中不能推斷出用戶的體驗、不能體驗到框架設計是不是直截了當,是不是智能。特性也不能告訴你框架代碼的質量如何、性能如何、細節處理的如何、安全性如何。判斷一個框架的辦法是在使用中了解它。安裝CodeIgniter很簡單,所以,請你使用它。CodeIgniter的主要特性如下:
* 基於 MVC 體系
* 超輕量級
* 對數種資料庫平台的全特性支持的資料庫類
* Active Record 支持
* 表單與數據驗證
* 安全性與 XSS 過濾
* Session 管理
* 郵件發送類,支持附件,HTML 或文本郵件,多協議(sendmail, SMTP 和 Mail)及更多。
* 圖像處理類庫(剪裁,縮放,旋轉等)。支持 GD,ImageMagickBetPBM
* 文件上傳類
* FTP 類
* 本地化
* 分頁
* 數據加密
* 基準測試
* 全頁面緩存
* 錯誤日誌
* 應用程序評測
* 日曆類
* User-Agent 類
* Zip 編碼類
* 模板引擎類
* Trackback 類
* XML-RPC 類庫
* 單元測試類
* “搜索引擎友好”的 URL
* 靈活的 URI 路由
* 支持鉤子和類擴展
* 大量的輔助函數
她是一個小巧但功能強大的 PHP 框架,作為一個簡單而“優雅”的工具包,她可以為 PHP 程序員建立功能完善的 Web 應用程序。如果你是一個與人共享主機並且為客戶要求的期限而煩惱的開發人員,如果你已經厭倦了那些傻大笨粗的框架,那麼 CodeIgniter 就是你所需要的,如果...
* 你想要一個小巧的框架。
* 你需要出色的性能。
* 你需要廣泛兼容標準主機上的各種 PHP 版本和配置。
* 你想要一個幾乎只需 0 配置的框架。
* 你想要一個不需使用命令行的框架。
* 你想要一個不需堅守限制性編碼規則的框架。
* 你對 PEAR 這種大規模集成類庫不感興趣。
* 你不希望被迫學習一門模板語言(雖然可以選擇你要求的模板解析器)。
* 你不喜歡複雜,熱愛簡單。
* 你需要清晰、完整的文檔。

流程圖


下圖說明數據流如何貫穿整個系統:
CodeIgniter
1.index.php作為前端控制器,初始化運行CodeIgniter所需要的基本資源。
2.Router檢查HTTP請求,以確定誰來處理請求。
3.如果緩存(Cache)文件存在,它將繞過通常的系統執行順序,被直接發送給瀏覽器。
4.安全(Security)。應用程序控制器(ApplicationController)裝載之前,HTTP請求和任何用戶提交的數據將被過濾。
5.控制器(Controller)裝載模型、核心庫、插件、輔助函數,以及任何處理特定請求所需的其它資源。
6.最終視圖(View)渲染髮送到Web瀏覽器中的內容。如果開啟緩存(Caching),視圖首先被緩存,所以將可用於以後的請求。

設計架構


CodeIgniter 的目標是在最小化,最輕量級的開發包中得到最大的執行效率、功能和靈活性。
為了達到這個目標,我們在開發過程的每一步都致力於基準測試、重構和簡化工作,拒絕加入任何對實現目標沒有幫助的東西。
從技術和架構角度看,CodeIgniter 按照下列目標創建:
動態實例化,在 CodeIgniter 中,組件的導入和函數的執行只有在被要求的時候才執行,而不是在全局範圍。除了最小的核心資源外,不假設系統需要任何資源,因此預設的系統非常輕量級。被 HTTP 請求所觸發的事件,以及你設計的控制器和視圖將決定它們什麼時候被引用。松耦合。耦合是指一個系統的組件之間的相關程度。越少的組件相互依賴那麼這個系統的重用性和靈活性就越好。我們的目標是一個非常松耦合的系統。組件專一性。專一是指組件有一個非常小的專註目標。在 CodeIgniter 里,為了達到最大的用途,每個類和它的功能都是高度自治的。 CodeIgniter 是一個動態實例化,高度組件專一性的松耦合系統。它在小巧的基礎上力求做到簡單、靈活和高性能。

模式


CodeIgniter 是基於模型-視圖-控制器這一設計模式的。MVC 是一種將應用程序的邏輯層和表現層進行分離的方法。在實踐中,由於表現層從 PHP 腳本中分離了出來,所以它允許你的網頁中只包含很少的腳本。
模型(Model)代表你的數據結構。通常來說,你的模型類將包含取出、插入、更新你的資料庫資料這些功能。視圖(View)是展示給用戶的信息。一個視圖通常是一個網頁,但是在 CodeIgniter 中,一個視圖也可以是一個頁面片段,如頁頭、頁尾。它還可以是一個RSS 頁面,或任何其它類型的“頁面”。控制器(Controller)是模型、視圖以及其他任何處理 HTTP 請求所必須的資源之間的中介,並生成網頁。 CodeIgniter 在 MVC 使用上非常寬鬆,因此模型不是必需的。如果你不需要使用這種分離方式,或是發覺維護模型比你想象中的複雜很多,你可以不用理會它們而創建自己的應用程序,並最少化使用控制器和視圖。CodeIgniter 也可以和你現有的腳本合併使用,或者允許自行開發此系統的核心庫,其目的是,使你可以以最適合你的方式工作。

許可協議


本協議是你和EllisLab公司之間為使用CodeIgniter軟體(以下簡稱“軟體”)達成的法律協議。獲取軟體的同時你必須同意完全遵守本協議的條款及條件。

允許使用

只要符合以下條件,你將被允許使用、複製、修改以及分發本軟體和它相關的文檔,包括你可以修改或者不修改地用於任何目的:
1.這個許可協議的一份拷貝必須包含在分發的軟體中。
2.再分發源代碼時必須在所有源代碼文件中保留上方的版權提醒。
3.以二進位形式再分發時,必須在文檔以及/或者隨分發提供的其他物品上保留上面的版權提醒。
4.任何修改過的文件必須加上對原始代碼修改的註釋以及修改者名稱。
5.任何由本軟體衍生的產品必須在它們的文檔以及/或者隨分發提供的物品中表明它們來源於CodeIgniter。
6.從本軟體衍生的產品可以在名稱中完全不出現"CodeIgniter"或者出現"CodeIgniter",這一點不需要事先從EllisLab公司得到許可。

賠償

你同意對任何因你使用或者誤用本軟體或者違反任何本許可協議條款所產生的直接、間接、附帶的或相應的第三者索賠、訴訟費用承擔賠償,以及對本軟體的作者和任何貢獻者無害化。

保修免責條款

該軟體提供的是“現況”,沒有任何保證,表示或暗示,包括但不限於擔保的質量,性能,不侵權,適銷性或特定用途的適用性。

責任限制

你將承擔所有安裝和使用本軟體的風險。