CodeIgniter源碼分析之index.php

來源:互聯網
上載者:User

標籤:blog   http   io   ar   for   檔案   on   2014   log   

<?php/**---------------------------------------------------------------* APPLICATION ENVIRONMENT*---------------------------------------------------------------*** //設定項目啟動並執行環境,該配置會影響錯誤報表的顯示和設定檔的讀取。*/define(‘ENVIRONMENT‘, ‘development‘);/**---------------------------------------------------------------* ERROR REPORTING*---------------------------------------------------------------**/if (defined(‘ENVIRONMENT‘)){switch (ENVIRONMENT){case ‘development‘:error_reporting(E_ALL);break;case ‘testing‘:case ‘production‘:error_reporting(0);break;default:exit(‘The application environment is not set correctly.‘);}}/**---------------------------------------------------------------* SYSTEM FOLDER NAME*---------------------------------------------------------------*** 設定系統目錄*/$system_path = ‘system‘;/**---------------------------------------------------------------* APPLICATION FOLDER NAME*---------------------------------------------------------------*** 設定應用目錄*/$application_folder = ‘application‘;/** --------------------------------------------------------------------* DEFAULT CONTROLLER* --------------------------------------------------------------------***///下面這個地方設定的$routing會對路由有重新導向的作用。詳見:core/CodeIginter.php// $routing[‘directory‘] = ‘‘;// $routing[‘controller‘] = ‘‘;// $routing[‘function‘] = ‘‘;/** -------------------------------------------------------------------* CUSTOM CONFIG VALUES* ------------------------------------------------------------------* 下面這裡提供一個定義配置資訊的地方。其實在index.php裡面很多地方都可以設定一些配置,像剛才上面的$routing,* 而在這裡設定的配置資訊要優先於在config/目錄下設定的配置資訊。*/// $assign_to_config[‘name_of_config_item‘] = ‘value of config item‘;// --------------------------------------------------------------------// END OF USER CONFIGURABLE SETTINGS. DO NOT EDIT BELOW THIS LINE// --------------------------------------------------------------------/** ---------------------------------------------------------------* Resolve the system path for increased reliability* ---------------------------------------------------------------*///這個請參考:http://blog.163.com/wu_guoqing/blog/static/196537018201272512616394/if (defined(‘STDIN‘)){chdir(dirname(__FILE__));}//計算出$system_path,即核心檔案所在的路徑。realpath($path)中的$path必須為存在的路徑。if (realpath($system_path) !== FALSE){$system_path = realpath($system_path).‘/‘;}// 確保以/結尾$system_path = rtrim($system_path, ‘/‘).‘/‘;// 判斷是否為正確的目錄if ( ! is_dir($system_path)){exit("Your system folder path does not appear to be set correctly. Please open the following file and correct this: ".pathinfo(__FILE__, PATHINFO_BASENAME));}/** -------------------------------------------------------------------* 在上面配置好一些檔案目錄資訊後,根據這些目錄來定義好一些常量。* -------------------------------------------------------------------*/// 這個入口檔案的檔案名稱,目前是index.phpdefine(‘SELF‘, pathinfo(__FILE__, PATHINFO_BASENAME));// 副檔名define(‘EXT‘, ‘.php‘);// 統一以/為目錄分隔字元(windows下是/或\,linux下預設是/)define(‘BASEPATH‘, str_replace("\\", "/", $system_path));// 前端控制器所在的目錄。在CI裡面就是這個入口檔案。define(‘FCPATH‘, str_replace(SELF, ‘‘, __FILE__));// 取得核心檔案的目錄名,具體做法如下://trim(BASHPATH,‘/‘):先把BASHPATH給修剪一下,去掉首尾的‘/’//先後通過strrchr(xxx,‘/‘):把上述得出來的字串,截取出以最後一個‘/‘開頭到結尾的一個子字串。//最後再trim(xxx,‘/‘),去掉兩端的‘/’,實質這裡是去掉左邊的‘/‘。define(‘SYSDIR‘, trim(strrchr(trim(BASEPATH, ‘/‘), ‘/‘), ‘/‘));// 定義應用檔案目錄//先看看這個被你配置的目錄是不是相對於當前檔案,如果是的話,就可以成功定義。if (is_dir($application_folder)){define(‘APPPATH‘, $application_folder.‘/‘);}else{//如果不是,則再判斷相對於核心檔案目錄是否存在這個應用目錄。如果沒有就拉倒了。。if ( ! is_dir(BASEPATH.$application_folder.‘/‘)){exit("Your application folder path does not appear to be set correctly. Please open the following file and correct this: ".SELF);}define(‘APPPATH‘, BASEPATH.$application_folder.‘/‘);}/** --------------------------------------------------------------------* LOAD THE BOOTSTRAP FILE* --------------------------------------------------------------------**///實質上,這個前端控制器兼入口檔案僅僅是定義當前項目啟動並執行環境和一些常量,而真正起宏觀控製作用的是下面這個CodeIgniter.php。require_once BASEPATH.‘core/CodeIgniter.php‘;/*** 總結一下這個檔案做了一些什麼:* 第一,先設定好當前項目的運行環境,這裡主要是錯誤報表方面的設定,這個放在了整個項目啟動並執行第一位。* 第二,再配置好一些目錄資訊,這些都是一定開發人員可以自訂的東西。然後根據配置目錄資訊,CI會把一些以後會有用的東西定義為常量* ,為什麼要這樣做呢?因為以後會在很多不同地方,例如CI裡面的各個組件都會用到路徑相關的資訊,在這裡統一計算並定義,以後方* 便引用和修改。* 第三,引入CodeIgniter.php進行工作。** 移步至核心檔案目錄下的core/CodeIgniter.php: http://calixwu.com/2014/11/codeigniter-yuanmafenxi-codeigniter-php.html*/



CodeIgniter源碼分析之index.php

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.