CodeIgniter源码阅读笔记1之index.php
目前阅读的版本为稳定版3.0
这个文件作为CI的入口文件,主要做了一些初始化之类的操作,保证后续的正常执行。
运行环境
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
在文件的开始就需要定义一个运行环境,CI默认提供了development、testing、production三种环境,用户可以定义自己的运行环境,后面在很多的文件中都用到了这个变量。很明显后面就根据这个环境设置错误报告的级别,如果用户定义了自己的运行环境,也需要在这里进行相应的修改。
目录设置
接下来就是设置了几个目录,当然允许用户也可以自己更改system、application的名称。
$system_path = 'system';
$application_folder = 'application';
$view_folder = '';
需要注意最后没有slash。
默认控制器
这里给用户一个定义默认控制器的功能,正常情况下是在路由中设置默认控制器的,但是可以在这里强制硬编码一个控制器。这样做的结果就是你的web程序只能有一个特定的控制器,所以没有特殊需要的话留空即可。
到这里用户可以自定义的配置文件部分就完成了,接下来通常情况下是不需要用户改动的。
配置CLI
if (defined('STDIN'))
{
chdir(dirname(__FILE__));
}
if (($_temp = realpath($system_path)) !== FALSE)
{
$system_path = $_temp.'/';
}
else
{
// Ensure there's a trailing slash
$system_path = rtrim($system_path, '/').'/';
}
// Is the system path correct?
if ( ! is_dir($system_path))
{
header('HTTP/1.1 503 Service Unavailable.', TRUE, 503);
echo 'Your system folder path does not appear to be set correctly. Please open the following file and correct this: '.pathinfo(__FILE__, PATHINFO_BASENAME);
exit(3); // EXIT_CONFIG
}
在这里设置一些东西,可以让CLI模式正常运行,比较简单。
定义路径常量
接下来就是定义一些常量了,像什么SELF、BASEPATH等等。在后面的源码阅读中都是比较常用的,建议简单记一部分。
最后引入了 BASEPATH中的core/CodeIgniter.php文件,这个文件可以算是整个CI框架执行流程的核心部分,被称作bootstrap文件。
最后看一下整个CI框架的执行流程