zoukankan      html  css  js  c++  java
  • CodeIgniter框架——源码分析之入口文件index.php

      CodeIgniter框架的入口文件主要是配置开发环境,定义目录常量,加载CI的核心类core/CodeIgniter.php。

       在index.php中,CI首先做的事情就是设置PHP的错误报告,上来都是E_ALL,如果不想让所有问题都显示,改改’ENVIRONMENT‘,如development,testing,production即可。接下来定义了两个变量"system_path"和"application_folder",用来指定system文件夹的名字和applicant文件夹的名字。然后CI用system文件夹变量的内容转为完全的路径。最后定义一些常量,并把接下来的工作完全交给CodeIgniter.php这个文件。

     源码分析如下:

    <?php
    //这个文件是入口,后期所有的文件都要在这里执行。
    /*-----------------------------------------------
     * 系统环境配置常量
     * 能够配置错误显示级别
     * -----------------------------------------------
     * 默认情况下:
     *     development //开发环境报告所有错误
     *     testing     //测试环境不报告错误
     *     production  //生产环境不报告错误
     */
        define('ENVIRONMENT', 'development');
     
    /*
     * 根据环境常量打开不同的错误显示级别
     */
        switch (ENVIRONMENT){
            case 'development':
                error_reporting(E_ALL);
            break;
     
            case 'testing':
            case 'production':
                error_reporting(0);
            break;
     
            default:
                exit('应用的环境设置错误.');
        }
     
    /*
     * ---------------------http://i.cnblogs.com/?postid=3921349&update=1
     * 系统文件目录,可以自定义
     * --------------------
     * 默认情况下是"system"文件夹,并且在相对于index.php文件同一个目录下。
     * 你可以更改这个路径,但是路径必须与你的系统文件所在位置一致
     *
     * 不需要后面的斜杠"/";
     */
     
        $system_path = 'system';
     
    /*
     *---------------------------------------------------------------
     * 应用程序目录
     *---------------------------------------------------------------
     *
     * 这个文件夹是放置程序的地方,默认情况是“application”文件夹,可以重命名或重定位到服务器上的任何位置。
     * 详情可以访问:
     * http://codeigniter.com/user_guide/general/managing_apps.html
     *
     * 不需要后面的斜杠"/";
     *
     */
     
        $application_folder = 'application';
     
    /*
     * --------------------------------------------------------------------
     * 这个地方有一段用户自己设置的代码,我自己还没怎么搞清楚,就不写了
     * --------------------------------------------------------------------
     */
    /* * --------------------------------------------------------------- * 使用可靠的路径解决路由问题 * ---------------------------------------------------------------
    */ // 是否是从命令行运行?————正确设置当前目录下命令行(CLI)请求 if (defined('STDIN')){ chdir(dirname(__FILE__)); } if (realpath($system_path) !== FALSE){ $system_path = realpath($system_path).'/'; } // 确保最后一定以后一个斜杠"/"; $system_path = rtrim($system_path, '/').'/'; // 判断系统目录是否存在 if ( ! is_dir($system_path)){ exit("你的系统目录未设置正确. 请打开以下文件重新设置: ".pathinfo(__FILE__, PATHINFO_BASENAME)); } /* * ------------------------------------------------------------------- * 设置路径(目录)常量 * ------------------------------------------------------------------- */ // 获得当前文件名,即定义入口文件名 define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME)); // php文件扩展名
      //不推荐使用全局常量
    define('EXT', '.php'); // 系统目录常量 define('BASEPATH', str_replace("\", "/", $system_path)); // 前端控制器路径常量,即入口文件的目录 define('FCPATH', str_replace(SELF, '', __FILE__)); // 系统核心目录名
      //trim(BASEPATH, '/')用来去掉首尾的‘/’————trim()函数从字符串的两端删除空白字符和其他预定义字符
      //strrchr()函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符
    define('SYSDIR', trim(strrchr(trim(BASEPATH, '/'), '/'), '/')); //定义应用目录常量 if (is_dir($application_folder)){ define('APPPATH', $application_folder.'/'); }else{ if ( ! is_dir(BASEPATH.$application_folder.'/')){ exit("你的应用程序目录可能未设置正确. 请打开以下文件设置: ".SELF); } define('APPPATH', BASEPATH.$application_folder.'/'); } /* * -------------------------------------------------------------------- * 载入自举文件 * -------------------------------------------------------------------- */
    //前面都是定义环境和定义常量,现在开始加载CI核心文件,开始真正的CI之旅
    require_once BASEPATH.'core/CodeIgniter'.EXT; /* End of file index.php */ /* Location: ./index.php */
  • 相关阅读:
    冒泡排序
    获取某年某月有多少天 & 常用日期转换
    left join,right join ,inner join
    Left join加上where条件的困惑
    ORACLE查询练习
    Ch25 文件和注册表操作(2)-- 读写文件
    Ch25 文件和注册表操作(1)--文件系统
    C#入门经典札记_Ch05变量的更多内容
    C#入门经典札记_Ch04流程控制
    C#入门经典札记_Ch03变量和表达式
  • 原文地址:https://www.cnblogs.com/xymqx/p/3921349.html
Copyright © 2011-2022 走看看