目前阅读的版本为稳定版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框架的执行流程
202204518788070.png