CodeIgniter框架的入口文件主要是配置開發環境,定義目錄常量,加載CI的核心類core/CodeIgniter.php。php
在index.php中,CI首先作的事情就是設置PHP的錯誤報告,上來都是E_ALL,若是不想讓全部問題都顯示,改改’ENVIRONMENT‘,如development,testing,production便可。接下來定義了兩個變量"system_path"和"application_folder",用來指定system文件夾的名字和applicant文件夾的名字。而後CI用system文件夾變量的內容轉爲徹底的路徑。最後定義一些常量,並把接下來的工做徹底交給CodeIgniter.php這個文件。html
源碼分析以下:前端
<?php //這個文件是入口,後期全部的文件都要在這裏執行。 /*----------------------------------------------- * 系統環境配置常量 * 可以配置錯誤顯示級別 * ----------------------------------------------- * 默認狀況下: * development //開發環境報告全部錯誤 * testing //測試環境不報告錯誤 * production //生產環境不報告錯誤 */ define('ENVIRONMENT', 'development'); /* * 根據環境常量打開不一樣的錯誤顯示級別 */ switch (ENVIRONMENT){ case 'development': error_reporting(E_ALL); break; case 'testing': case 'production': error_reporting(0); break; default: exit('應用的環境設置錯誤.'); } /* * ---------------------http://i.cnblogs.com/?postid=3921349&update=1 * 系統文件目錄,能夠自定義 * -------------------- * 默認狀況下是"system"文件夾,而且在相對於index.php文件同一個目錄下。 * 你能夠更改這個路徑,可是路徑必須與你的系統文件所在位置一致 * * 不須要後面的斜槓"/"; */ $system_path = 'system'; /* *--------------------------------------------------------------- * 應用程序目錄 *--------------------------------------------------------------- * * 這個文件夾是放置程序的地方,默認狀況是「application」文件夾,能夠重命名或重定位到服務器上的任何位置。 * 詳情能夠訪問: * http://codeigniter.com/user_guide/general/managing_apps.html * * 不須要後面的斜槓"/"; * */ $application_folder = 'application'; /* * -------------------------------------------------------------------- * 這個地方有一段用戶本身設置的代碼,我本身還沒怎麼搞清楚,就不寫了 * -------------------------------------------------------------------- */
/* * --------------------------------------------------------------- * 使用可靠的路徑解決路由問題 * --------------------------------------------------------------- */ // 是不是從命令行運行?————正確設置當前目錄下命令行(CLI)請求 if (defined('STDIN')){ chdir(dirname(__FILE__)); } if (realpath($system_path) !== FALSE){ $system_path = realpath($system_path).'/'; } // 確保最後必定之後一個斜槓"/"; $system_path = rtrim($system_path, '/').'/'; // 判斷系統目錄是否存在 if ( ! is_dir($system_path)){ exit("你的系統目錄未設置正確. 請打開如下文件從新設置: ".pathinfo(__FILE__, PATHINFO_BASENAME)); } /* * ------------------------------------------------------------------- * 設置路徑(目錄)常量 * ------------------------------------------------------------------- */ // 得到當前文件名,即定義入口文件名 define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME)); // php文件擴展名
//不推薦使用全局常量 define('EXT', '.php'); // 系統目錄常量 define('BASEPATH', str_replace("\\", "/", $system_path)); // 前端控制器路徑常量,即入口文件的目錄 define('FCPATH', str_replace(SELF, '', __FILE__)); // 系統核心目錄名
//trim(BASEPATH, '/')用來去掉首尾的‘/’————trim()函數從字符串的兩端刪除空白字符和其餘預約義字符
//strrchr()函數查找字符串在另外一個字符串中最後一次出現的位置,並返回從該位置到字符串結尾的全部字符
define('SYSDIR', trim(strrchr(trim(BASEPATH, '/'), '/'), '/')); //定義應用目錄常量 if (is_dir($application_folder)){ define('APPPATH', $application_folder.'/'); }else{ if ( ! is_dir(BASEPATH.$application_folder.'/')){ exit("你的應用程序目錄可能未設置正確. 請打開如下文件設置: ".SELF); } define('APPPATH', BASEPATH.$application_folder.'/'); } /* * -------------------------------------------------------------------- * 載入自舉文件 * -------------------------------------------------------------------- */
//前面都是定義環境和定義常量,如今開始加載CI核心文件,開始真正的CI之旅
require_once BASEPATH.'core/CodeIgniter'.EXT; /* End of file index.php */ /* Location: ./index.php */