该文件首先执行下面语句 require(BASEPATH.'core/Common.php') 导入需要用到的函数。
codeigniter的核心文件在于CodeIgniter.php,php是服务器端脚本,对于每个用户代码不可能共享,所有的请求处理都是从重新执行第一句代码开始。而在CodeIgniter.php文件中,处理了Action前后的逻辑,以及文件载入等操作。
路径处理:
$RTR->_set_routing();
//Set any routing overrides that may exist in the main index file
if(isset($routing))
{
$RTR->_set_overrides($routing);
}
缓存处理:
$class = $RTR->fetch_class();
$method= $RTR->fetch_method();
if( ! class_exists($class)
ORstrncmp($method, '_', 1) == 0
ORin_array(strtolower($method), array_map('strtolower', get_class_methods('CI_Controller')))
)
{
if( ! empty($RTR->routes['404_override']))
{
$x= explode('/', $RTR->routes['404_override']);
$class= $x[0];
$method= (isset($x[1]) ? $x[1] : 'index');
if( ! class_exists($class))
{
if( ! file_exists(APPPATH.'controllers/'.$class.'.php'))
{
show_404("{$class}/{$method}");
}
include_once(APPPATH.'controllers/'.$class.'.php');
}
}
else
{
show_404("{$class}/{$method}");
}
}
CodeIgniter在最后处理了_remap(),该函数用法如下: