CodeIgniter--CI框架源码分析(一)

前言:本人是一名PHPer,入职互联网行业三个月,工作用到的框架是CodeIgniter(以下简称CI),打算折腾一下自己,开一个新坑同时也写下一点东西,希望各位看官轻喷。PHP--CI框架源码分析,版本2.1.4。
首先我们看下CI框架的目录:

CodeIgniter--CI框架源码分析(一)_第1张图片
初始目录结构

user_guide

该目录相当于参考手册(ps:英文版),建议网速好并且想找中文资料的童鞋直接到中文官网查看中文手册,实际开发中我们就不需要这个目录了,直接删掉即可。

入口文件 index.php

CI框架的入口文件,一切都从这里开始。一般入口文件是用来定义各种常量的,包括根目录路径、系统文件路径等等,我们一步一步地来分析。


这是CI框架中第一行代码(忽略注释),表示定义环境常量,'development'表示开发环境,与PHP的错误报告等级相关,所有警告和错误都会显示;我们还可以定义其为'production'生产环境,关闭所有错误报告。我们接着看下面这段相关代码:

if(definded('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.');
  } 
}

看了上面这段代码我们会发现,我们可以自己定义各种ENVIRONMENT的值,设置相对应的错误等级报告,建议按照CI框架默认设置即可。然后是定义各种变量和常量,具体我们看下面的代码:

$system_path = 'system';  //对应根目录的system文件夹
$application_folder = 'application'; //对应根目录的application文件夹

// Set the current directory correctly for CLI requests
if (defined('STDIN'))  //CLI命令行模式常量
{   
  chdir(dirname(__FILE__));
}

if (realpath($system_path) !== FALSE)
{   
  $system_path = realpath($system_path).'/'; //相对路径转换为绝对路径(注意最后的'/')
}

// ensure there's a trailing slash
$system_path = rtrim($system_path, '/').'/'; //确保路径名最右边为斜杠
// Is the system path correct? 确保路径是存在的
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));
}
// The name of THIS file
define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME)); //index.php

// The PHP file extension
// this global constant is deprecated.
define('EXT', '.php');
// Path to the system folder
define('BASEPATH', str_replace("\\", "/", $system_path)); //system文件夹目录路径
// Path to the front controller (this file)
define('FCPATH', str_replace(SELF, '', __FILE__)); //网站根目录
// Name of the "system folder"
define('SYSDIR', trim(strrchr(trim(BASEPATH, '/'), '/'), '/')); //'system'文件夹的名称

// The path to the "application" folder
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.'/');
}

上面的CI框架默认的目录及常量定义,当然我们也可以改变目录结构(这在后面的文章会提到),相应的也要改对应的定义语句。最后index.php文件的语句是require_once BASEPATH.'core/CodeIgniter.php',引入system文件夹下的核心文件CodeIgniter.php,下一篇文章再来分析该文件。

你可能感兴趣的:(CodeIgniter--CI框架源码分析(一))