CodeIgniter源代码阅读(一)index.php

  1 <?php
  2 
  3 /*
  4  *---------------------------------------------------------------
  5  * APPLICATION ENVIRONMENT
  6  *---------------------------------------------------------------
  7  *
  8  * You can load different configurations depending on your
  9  * current environment. Setting the environment also influences
 10  * things like logging and error reporting.
 11  *
 12  * This can be set to anything, but default usage is:
 13  *
 14  *     development
 15  *     testing
 16  *     production
 17  *
 18  * NOTE: If you change these, also change the error_reporting() code below
 19  *
 20  */
 21     define('ENVIRONMENT', 'development');//开发环境
 22 /*
 23  *---------------------------------------------------------------
 24  * ERROR REPORTING
 25  *---------------------------------------------------------------
 26  *
 27  * Different environments will require different levels of error reporting.
 28  * By default development will show errors but testing and live will hide them.
 29  */
 30 //不同环境的 错误提示级别
 31 if (defined('ENVIRONMENT'))
 32 {
 33     switch (ENVIRONMENT)
 34     {
 35         case 'development':
 36             error_reporting(E_ALL);
 37         break;
 38     
 39         case 'testing':
 40         case 'production':
 41             error_reporting(0);
 42         break;
 43 
 44         default:
 45             exit('The application environment is not set correctly.');
 46     }
 47 }
 48 
 49 /*
 50  *---------------------------------------------------------------
 51  * SYSTEM FOLDER NAME
 52  *---------------------------------------------------------------
 53  *
 54  * This variable must contain the name of your "system" folder.
 55  * Include the path if the folder is not in the same  directory
 56  * as this file.
 57  * 系统目录
 58  */
 59     $system_path = 'system';
 60 
 61 /*
 62  *---------------------------------------------------------------
 63  * APPLICATION FOLDER NAME
 64  *---------------------------------------------------------------
 65  *
 66  * If you want this front controller to use a different "application"
 67  * folder then the default one you can set its name here. The folder
 68  * can also be renamed or relocated anywhere on your server.  If
 69  * you do, use a full server path. For more info please see the user guide:
 70  * http://codeigniter.com/user_guide/general/managing_apps.html
 71  *
 72  * NO TRAILING SLASH!
 73  *应用目录
 74  */
 75     $application_folder = 'application';//应用程序目录
 76 
 77 /*
 78  * --------------------------------------------------------------------
 79  * DEFAULT CONTROLLER
 80  * --------------------------------------------------------------------
 81  *
 82  * Normally you will set your default controller in the routes.php file.
 83  * You can, however, force a custom routing by hard-coding a
 84  * specific controller class/function here.  For most applications, you
 85  * WILL NOT set your routing here, but it's an option for those
 86  * special instances where you might want to override the standard
 87  * routing in a specific front controller that shares a common CI installation.
 88  *
 89  * IMPORTANT:  If you set the routing here, NO OTHER controller will be
 90  * callable. In essence, this preference limits your application to ONE
 91  * specific controller.  Leave the function name blank if you need
 92  * to call functions dynamically via the URI.
 93  *
 94  * Un-comment the $routing array below to use this feature
 95  *
 96  */
 97     // The directory name, relative to the "controllers" folder.  Leave blank
 98     // if your controller is not in a sub-folder within the "controllers" folder
 99     // $routing['directory'] = '';
100 
101     // The controller class file name.  Example:  Mycontroller
102     // $routing['controller'] = '';
103 
104     // The controller function you wish to be called.
105     // $routing['function']    = '';
106 
107 
108 /*
109  * -------------------------------------------------------------------
110  *  CUSTOM CONFIG VALUES
111  * -------------------------------------------------------------------
112  *
113  * The $assign_to_config array below will be passed dynamically to the
114  * config class when initialized. This allows you to set custom config
115  * items or override any default config values found in the config.php file.
116  * This can be handy as it permits you to share one application between
117  * multiple front controller files, with each file containing different
118  * config values.
119  *
120  * Un-comment the $assign_to_config array below to use this feature
121  *
122  */
123     // $assign_to_config['name_of_config_item'] = 'value of config item';
124 
125 
126 
127 // --------------------------------------------------------------------
128 // END OF USER CONFIGURABLE SETTINGS.  DO NOT EDIT BELOW THIS LINE
129 // --------------------------------------------------------------------
130 
131 /*
132  * ---------------------------------------------------------------
133  *  Resolve the system path for increased reliability
134  * ---------------------------------------------------------------
135  */
136 
137     // Set the current directory correctly for CLI requests CLI,命令行界面
138     if (defined('STDIN'))
139     {
140         chdir(dirname(__FILE__));
141     }
142 //$system_path,即核心文件所在的路径。realpath($path)中的$path必须为存在的路径
143     if (realpath($system_path) !== FALSE)//realpath返回规范化的绝对路径名
144 
145     {
146         $system_path = realpath($system_path).'/';
147     }
148 
149     // ensure there's a trailing slash 确保最后有个斜线
150     $system_path = rtrim($system_path, '/').'/';
151 
152     // Is the system path correct?
153     if ( ! is_dir($system_path))
154     {
155         exit("Your system folder path does not appear to be set correctly. Please open the following file and correct this: ".pathinfo(__FILE__, PATHINFO_BASENAME));
156     }
157 
158 /*
159  * -------------------------------------------------------------------
160  *  Now that we know the path, set the main path constants
161  * -------------------------------------------------------------------
162  */
163 // 这个入口文件的文件名,目前是index.php
164     // The name of THIS file
165     define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));//index.php
166 
167     // The PHP file extension
168     // this global constant is deprecated.
169     define('EXT', '.php');
170 
171     // Path to the system folder// 统一以/为目录分隔符(windows下是/或\,linux下默认是/)
172     define('BASEPATH', str_replace("\\", "/", $system_path));//F:/products/zh.ci/system/
173 
174     // Path to the front controller (this file)
175     define('FCPATH', str_replace(SELF, '', __FILE__));//F:\products\zh.ci\
176     
177     // Name of the "system folder"核心文件的目录名
178     define('SYSDIR', trim(strrchr(trim(BASEPATH, '/'), '/'), '/'));//strrchr — 查找指定字符在字符串中的最后一次出现  system
179 
180     // The path to the "application" folder
181     if (is_dir($application_folder))//如果文件名存在并且为目录则返回 TRUE。如果 filename 是一个相对路径,则按照当前工作目录检查其相对路径。 
182     {
183         define('APPPATH', $application_folder.'/');
184     }
185     else
186     {
187         if ( ! is_dir(BASEPATH.$application_folder.'/'))
188         {
189             exit("Your application folder path does not appear to be set correctly. Please open the following file and correct this: ".SELF);
190         }
191 
192         define('APPPATH', BASEPATH.$application_folder.'/');
193     }
194 /*
195  * --------------------------------------------------------------------
196  * LOAD THE BOOTSTRAP FILE
197  * --------------------------------------------------------------------
198  *
199  * And away we go...
200  *
201  */
202 //echo BASEPATH;
203 require_once BASEPATH.'core/CodeIgniter.php';
204 
205 /* End of file index.php */
206 /* Location: ./index.php */
posted @ 2012-11-20 08:36  Linux、Mongo、Php、Shell、Python、C  阅读(1696)  评论(0编辑  收藏  举报