CI框架代碼運行最詳細的流程

最近在學習CI(3.1.0-dev)框架源碼,一邊看源碼,一邊在github上面寫中文註釋,https://github.com/pandancode/CI-note,有興趣的同窗能夠看看。php

index.php流程:
一、定義開發模式,調試,開發,發佈
二、設置system,application等目錄
三、設置默認控制器(不建議在index.php設置)
四、設置用戶配置
五、檢查路徑
六、定義路徑常量
七、加載引導程序  system/core/codeigniter.php
 
condeigniter.php流程:
一、定義框架版本
二、加載框架定義的常數 system/config/contants.php
三、加載所有函數 system/core/Common.php
四、檢查PHP版本小於5.4,作兼容性處理
五、將PHP超級變量存放在$GLOBALS數組中
六、設置錯誤,異常,腳本退出觸發的函數
七、設置子類前綴
八、若有須要自動加載組件,則加載APPPATH/vendor/autoload.php,或者配置文件裏設置的文件路徑
九、加載benchmark,並記錄total_execution_time_start,_base_classes_start兩個時間點
十、加載Hooks,並調用pre_system鉤子
十一、加載config類,並初始化實例,根據首頁設置配置,替換配置文件其中項
十二、設置默認字符,並加載msstring、iconv擴展
1三、檢查mbstring,hash,password,standard類函數是否存在(可能因爲版本問題,有些函數在低版本中沒定義),則從新定義實現該函數
1四、實例化utf八、uri、router、output類
1五、緩存檢查,若是沒有重寫cache輸出,且知足緩存條件,則直接輸出緩存,退出腳本
1六、初始化Security、Input、Lang類
1七、加載BASEPATH/core/Controller.php控制器(遲點鋪開講)
1八、若是存在子控制器,則加載進來
1九、設置_base_classes_end時間點
20、檢查路由接觸出來的class和method是否有效,若是無效,則激活404狀態變量
2一、檢查是否重置404,若是重置404,則檢查重置404類和方法是否有效,若是無效,則取消404,
2二、若是404爲false,第一種狀況是自己404一直是未激活,則使用路由解析出來的類和方法,第二種重置了404,可是類或者方法無效,則使用默認的類和方法,否者使用新的類和方法處理404
2三、若是方法不是_remap,則獲取參數,Hooks調用pre_controller鉤子
2四、記錄controller_execution_time_class_method開始時間,並初始化class
2五、Hooks調用post_controller_constructor 鉤子
2六、調用class中method,這裏會調用相應的controller和方法,方法裏面在調用model來處理業務邏輯(遲點鋪開講)
2七、BM記錄controller_execution_time_class_method執行結束時間點
2八、Hooks調用post_controller鉤子
2九、輸出視圖
30、Hooks調用post_system鉤子
媽蛋,流程終於結束了。
相關文章
相關標籤/搜索