CodeIgniter是一個小巧但功能強大的PHP框架贱案,當前下載包2.6M省骂,作為一個簡單而“優(yōu)雅”的工具包刀脏,適合開發(fā)者們建立功能完善的Web應(yīng)用程序局荚。
官方地址【CI3.1.5】:https://codeigniter.org.cn/
CI4.x版本地址:https://codeigniter-chinese.github.io/codeigniter4-user-guide/index.html
1CI應(yīng)用程序流程圖
下圖說明了整個系統(tǒng)的數(shù)據(jù)流程:
1.index.php文件作為前端控制器,初始化運行CodeIgniter所需的基本資源愈污;
2.Router檢查HTTP請求危队,以確定如何處理該請求;
3.如果存在緩存文件钙畔,將直接輸出到瀏覽器,不用走下面正常的系統(tǒng)流程金麸;
4.在加載應(yīng)用程序控制器之前擎析,對HTTP請求以及任何用戶提交的數(shù)據(jù)進行安全檢查;
5.控制器加載模型、核心類庫揍魂、輔助函數(shù)以及其他所有處理請求所需的資源桨醋;
6.最后一步,渲染視圖并發(fā)送至瀏覽器现斋,如果開啟了緩存喜最,視圖被會先緩存起來用于后續(xù)的請求。
2CI框架源碼架構(gòu)
主要有三個目錄
1>application目錄:用于開發(fā)者編寫相應(yīng)的配置以及邏輯處理庄蹋,開發(fā)者只需在這個目錄下添加自己需要的開發(fā)文件瞬内。
2>system目錄:框架的系統(tǒng)庫,里面包括核心庫限书,類庫虫蝶,輔助類庫,數(shù)據(jù)庫等倦西。
3>user_guide:用戶手冊能真。
3CI框架運行流程
-1入口文件index.php,定義環(huán)境常量ENVIRONMENT
,路徑常量BASEPATH
扰柠,APPPATH
粉铐,VIEWPATH
,引入核心庫system/core
下的CodeIgniter.php
文件
-2初始化核心庫system/core
里的類庫卤档,引用配置文件蝙泼,錯誤處理,鉤子函數(shù)
{
benchmark:"Benchmark",
hooks:"Hooks",
config:"Config",
log:"Log",
utf8:"Utf8",
uri:"URI",
router:"Router",
output:"Output",
security:"Security",
input:"Input",
lang:"Lang",
loader:"Loader"
}
-3鉤子函數(shù)五個:
pre_system
在系統(tǒng)執(zhí)行的早期調(diào)用裆装,這個時候只有基準測試類和鉤子類被加載了踱承,還沒有執(zhí)行到路由或其他的流程。
pre_controller
在你的控制器調(diào)用之前執(zhí)行哨免,所有的基礎(chǔ)類都已加載茎活,路由和安全檢查也已經(jīng)完成。
post_controller_constructor
在你的控制器實例化之后立即執(zhí)行琢唾,控制器的任何方法都還尚未調(diào)用载荔。
post_controller
在你的控制器完全運行結(jié)束時執(zhí)行。
post_system
在最終的頁面發(fā)送到瀏覽器之后采桃、在系統(tǒng)的最后期被調(diào)用懒熙。
-4實例化CI_Controller
類
function&get_instance()
{
returnCI_Controller::get_instance();
}
路由類Router
解析url
獲取請求的controller
控制器、method
方法以及參數(shù)普办,加載application/config
配置文件中相應(yīng)的librays類庫
工扎、helper輔助函數(shù)
及DB庫
,也可添加model類
衔蹲,執(zhí)行方法肢娘,渲染html頁面
-5加載CI類庫system/libraries/
和自定義類庫application/libraries
$this->load->library('class_name');
$this->load->library('form_validation');//加載表單驗證類庫
類庫參考
*基準測試類
*緩存驅(qū)動器
*日歷類
*購物車類
*配置類
*Email類
*加密類
*加密類(新版)
*文件上傳類
*表單驗證類
*FTP類
*圖像處理類
*輸入類
*Javascript類
*語言類
*加載器類
*遷移類
*輸出類
*分頁類
*模板解析類
*安全類
*Session類
*HTML表格類
*引用通告類
*排版類
*單元測試類
*URI類
*用戶代理類
*XML-RPC與XML-RPC服務(wù)器類
*Zip編碼類
-6加載系統(tǒng)輔助函數(shù)system/helpers
和自定義輔助函數(shù)appliation/helpers
$this->load->helper('name');
$this->load->helper('url');//加載URL輔助函數(shù),它的文件名為url_helper.php
$this->load->helper(
['helper1','helper2','helper3']
);//加載多個輔助函數(shù)
輔助函數(shù)參考
*數(shù)組輔助函數(shù)
*驗證碼輔助函數(shù)
*Cookie輔助函數(shù)
*日期輔助函數(shù)
*目錄輔助函數(shù)
*下載輔助函數(shù)
*郵件輔助函數(shù)
*文件輔助函數(shù)
*表單輔助函數(shù)
*HTML輔助函數(shù)
*Inflector輔助函數(shù)
*語言輔助函數(shù)
*數(shù)字輔助函數(shù)
*路徑輔助函數(shù)
*安全輔助函數(shù)
*表情輔助函數(shù)
*字符串輔助函數(shù)
*文本輔助函數(shù)
*排版輔助函數(shù)
*URL輔助函數(shù)
*XML輔助函數(shù)