CodeIgniter (CI) 輕量、結構清晰,適合源碼研讀。本文從 index.php 入口開始,逐步追蹤核心類載入、路由解析、控制器實例化全流程,並將原英文註釋翻譯為中文。
BASEPATH, APPPATH)codeigniter/CodeIgniter.phpCommon.php (load_class, get_config, log_message 等)Compat.phpconfig/constants.phpmagic_quotes_runtimeload_class):
$CI = new $class() → 觸發 _ci_initialize() 載入 Loader、Model、View 等| 類別 | 關鍵方法/屬性 | 職責 |
|---|---|---|
| Benchmark | mark(), elapsed_time(), memory_usage() | 效能分析標記 |
| Hooks | _initialize(), _call_hook(), _run_hook() | 系統擴展點 (pre_system, pre_controller 等) |
| Config | load(), item(), site_url(), set_item() | 配置檔載入與存取 |
| URI | segment(), rsegment(), uri_to_assoc() | URL 片段解析與存取 |
| Router | _set_routing(), _parse_routes(), set_class() | 路由規則解析、控制器/方法決定 |
| Output | set_output(), cache(), _display(), _write_cache() | 輸出緩存、壓縮、最終輸出 |
| Input | get(), post(), cookie(), xss_clean(), _sanitize_globals() | 輸入獲取、XSS 過濾、全域變數清理 |
| Controller | _ci_initialize(), _ci_scaffolding() | 超類基礎,載入 Loader、Model、View、資料庫 |
load_class() 靜態變數快取實例,確保核心類唯一CodeIgniter.php 統一入口,協調全流程$this->load, $this->db 等)Input::xss_clean()) 深度解析完整中文註釋版源碼:ci的執行流程.txt (下載後改副檔名為 .php)