CodeIgniter 是一個小巧但功能強大的 PHP 框架,做爲一個簡單而「優雅」的工具包,它能夠爲開發者們創建功能完善的 Web 應用程序。本人使用CI框架有一段時間了,如今決定把該框架源碼剖析一遍,理解其構架的用意與精妙之處。分析完全部的源碼後,我纔來總結CI框架的優缺點,以及適用於哪些場景開發。
目前CI最新的版本是 3.1.4, 4.0版本也即將發佈。咱們先分析3.1.4版本,而後再看看4.0有哪些重大突破。
首先是查看根目錄下index.php文件了,主要定義了幾個常量:
一、ENVIRONMENT (開發環境常量),該常理三個值選擇:
a、development(默認值):開發模式,在該模式下,那確定是應該儘可能輸出捕獲的日誌錯誤,讓開發者儘快找出錯誤,定位代碼行,解決問題。
b、production:生產模式,該模式下,不輸出錯誤的信息給用戶看,會跳轉到一個友好的用戶錯誤提示頁面。
c、testting: 該值與 2 是同樣的含義;
二、BASEPATH(基本路徑)指向 項目的system目錄,框架的核心庫
三、APPPATH(應用路徑)指向application目錄,然而你也能夠修改該目錄名
最後一行 require_once BASEPATH.'core/CodeIgniter.php'; 引入框架的核心庫。
CodeIgniter.php 主要作了如下操做:
一、加載框架中的常量,即 application/config/constants.php
二、加載全局方法 system/core/common.php
三、全局變量安全篩選處理
四、設置程序錯誤、異常與奔潰的異常處理方法
五、加載子類的前綴
六、判斷是否使用自定義的自動加載
七、啓動計時器,記錄程序運行的時間
八、初始化鉤子(Hook),且在各個環節預約義好鉤子
九、加載配置文件 core/config,同時也加載用戶配置的config
十、加載字符集相關的類庫
十一、加載兼容性特性
十二、初始化系統核心庫 core下的 Utf八、URI、Router、Output、
Security、Input、Lang類,同時引入Controller.php文件
最後解析相應的controller、方法與參數,執行相應的業務處理。
下面的篇幅,咱們一 一的講解每一步的具體功能,以及爲什麼要這麼作!
歡迎關注我,一塊兒探討框架的設計原理。