CodeIgniter框架——源碼分析之入口文件index.php

  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 */
相關文章
相關標籤/搜索