CI框架是使用php寫的一套框架,讀起來相對比較簡單。
正常來說,CI有兩個重要的文件夾,第一個是application,這個用戶開發的代碼存放地址,另外一個是system這個是真正CI源碼的位置。
CI的根目錄下面的index.php 這個文件里面配置了需要關心的各個配置。
第一個是 ENVIRONMENT 這個環境變量,這個變量在后面的加載類的時候,指定到底調用哪個累文件,標准情況下一個是development開發,一個是production。
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
第二個 是系統$system_path,用來表示用的CI源碼在哪里。
第三個 是$application_floder 用來定義自己的項目代碼目錄
第四個是 BASEPATH這個其實就是$system_path
define('BASEPATH', $system_path);
第五個 是APPPATH 這個是$application_floder加上'/' 當然這里根據$application_floder是否是目錄,還進行一些邏輯上的容錯處理。
最后也是最重要的引入CI框架的初始化文件
require_once BASEPATH.'core/CodeIgniter.php';
下面說的是CodeIgniter.php這個文件,是加載CI文件導火線,發射器,當這里也會加載用戶開發項目的文件
加載用戶的config 下面的 constants.php
最早加載了Common.php這個文件,這個文件里包含后面加載其他文件用到的一些常用方法。
require_once(BASEPATH.'core/Common.php');
加載用戶config 下面的config/config.php 和 APPPATH.'config/'.ENVIRONMENT.'/config.php'
這里要注意的是上面個的配置文件中必須有$config數組。
后續很多的地方使用了load_class 這個公共函數來加載類,應該注意的是加載system.core.Config.php 放到最前面,而core/Controller.php是放后面加載
require_once BASEPATH.'core/Controller.php';特別要說的一點是,通過load_class加載的早於CI_Controller實例化的類,都將會成為CI_Controller實例一個成員,這是因為,通過load_class加載的類都會放到一個static 的數組里面,在初始化CI_Controller的實例的時候,會加載放到static數組里的類。
下面要是說的一個類是load可以看到通過這個類加載很多類,
其中一個函數式model 這個是用來加載位於用戶models目錄下的文件類,並把這個類實例做為CI的一個成員變量。
一個函數是helper這個函數更多的是加載時用戶和core目錄下的helper中查找類,並且類名稱是以_helper.php 為結尾。這些類里面一般都是一些函數。
另一個是database這個函數式加載數據庫操作的,這個函數首先加載用戶目錄下的配置文件config/database.php,根據里面配置參數dbdriver選項獲得相應類型的sql驅動器類。最后將初始化后的類實例作為CI實例的一個變量。如果不傳遞任何參數,這使用默認的default 初始化。否則使用傳遞參數實例化sql驅動器類。
