CodeIgniter源码分析之index.php

1<?php 2 3/* 4*--------------------------------------------------------------- 5* APPLICATION ENVIRONMENT 6*--------------------------------------------------------------- 7* 8* 9* //配置项目运行的环境,该配置会影响错误报告的显示和配置文件的读取。 10*/ 11define('ENVIRONMENT', 'development'); 12/* 13*--------------------------------------------------------------- 14* ERROR REPORTING 15*--------------------------------------------------------------- 16* 17*/ 18 19if (defined('ENVIRONMENT')) 20{ 21switch (ENVIRONMENT) 22{ 23case 'development': 24error_reporting(E_ALL); 25break; 26 27case 'testing': 28case 'production': 29error_reporting(0); 30break; 31 32default: 33exit('The application environment is not set correctly.'); 34} 35} 36 37/* 38*--------------------------------------------------------------- 39* SYSTEM FOLDER NAME 40*--------------------------------------------------------------- 41* 42* 43* 设置系统目录 44*/ 45$system_path = 'system'; 46 47/* 48*--------------------------------------------------------------- 49* APPLICATION FOLDER NAME 50*--------------------------------------------------------------- 51* 52* 53* 设置应用目录 54*/ 55$application_folder = 'application'; 56 57/* 58* -------------------------------------------------------------------- 59* DEFAULT CONTROLLER 60* -------------------------------------------------------------------- 61* 62* 63*/ 64 65//下面这个地方设置的$routing会对路由有重定向的作用。详见:core/CodeIginter.php 66// $routing['directory'] = ''; 67 68// $routing['controller'] = ''; 69 70// $routing['function'] = ''; 71 72/* 73* ------------------------------------------------------------------- 74* CUSTOM CONFIG VALUES 75* ------------------------------------------------------------------ 76* 下面这里提供一个定义配置信息的地方。其实在index.php里面很多地方都可以设置一些配置,像刚才上面的$routing, 77 78* 而在这里设置的配置信息要优先于在config/目录下设置的配置信息。 79*/ 80// $assign_to_config['name_of_config_item'] = 'value of config item'; 81 82// -------------------------------------------------------------------- 83// END OF USER CONFIGURABLE SETTINGS. DO NOT EDIT BELOW THIS LINE 84// -------------------------------------------------------------------- 85 86/* 87* --------------------------------------------------------------- 88* Resolve the system path for increased reliability 89* --------------------------------------------------------------- 90*/ 91 92//这个请参考:http://blog.163.com/wu_guoqing/blog/static/196537018201272512616394/ 93if (defined('STDIN')) 94{ 95chdir(dirname(__FILE__)); 96} 97 98//计算出$system_path,即核心文件所在的路径。realpath($path)中的$path必须为存在的路径。 99if (realpath($system_path) !== FALSE) 100{ 101$system_path = realpath($system_path).'/'; 102} 103 104// 确保以/结尾 105$system_path = rtrim($system_path, '/').'/'; 106 107// 判断是否为正确的目录 108if ( ! is_dir($system_path)) 109{ 110exit("Your system folder path does not appear to be set correctly. Please open the following file and correct this: ".pathinfo(__FILE__, PATHINFO_BASENAME)); 111} 112 113/* 114* ------------------------------------------------------------------- 115* 在上面配置好一些文件目录信息后,根据这些目录来定义好一些常量。 116* ------------------------------------------------------------------- 117*/ 118// 这个入口文件的文件名,目前是index.php 119define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME)); 120 121// 文件扩展名 122define('EXT', '.php'); 123 124// 统一以/为目录分隔符(windows下是/或\,linux下默认是/) 125define('BASEPATH', str_replace("\\", "/", $system_path)); 126 127// 前端控制器所在的目录。在CI里面就是这个入口文件。 128define('FCPATH', str_replace(SELF, '', __FILE__)); 129 130// 取得核心文件的目录名,具体做法如下: 131//trim(BASHPATH,'/'):先把BASHPATH给修剪一下,去掉首尾的‘/’ 132//先后通过strrchr(xxx,'/'):把上述得出来的字符串,截取出以最后一个'/'开头到结尾的一个子字符串。 133//最后再trim(xxx,'/'),去掉两端的‘/’,实质这里是去掉左边的'/'。 134define('SYSDIR', trim(strrchr(trim(BASEPATH, '/'), '/'), '/')); 135 136// 定义应用文件目录 137 138//先看看这个被你配置的目录是不是相对于当前文件,如果是的话,就可以成功定义。 139if (is_dir($application_folder)) 140{ 141define('APPPATH', $application_folder.'/'); 142} 143else 144{ 145//如果不是,则再判断相对于核心文件目录是否存在这个应用目录。如果没有就拉倒了。。 146if ( ! is_dir(BASEPATH.$application_folder.'/')) 147{ 148exit("Your application folder path does not appear to be set correctly. Please open the following file and correct this: ".SELF); 149} 150 151define('APPPATH', BASEPATH.$application_folder.'/'); 152} 153 154/* 155* -------------------------------------------------------------------- 156* LOAD THE BOOTSTRAP FILE 157* -------------------------------------------------------------------- 158* 159*/ 160 161//实质上,这个前端控制器兼入口文件仅仅是定义当前项目运行的环境和一些常量,而真正起宏观控制作用的是下面这个CodeIgniter.php。 162require_once BASEPATH.'core/CodeIgniter.php'; 163 164/** 165* 总结一下这个文件做了一些什么: 166* 第一,先设置好当前项目的运行环境,这里主要是错误报告方面的设置,这个放在了整个项目运行的第一位。 167* 第二,再配置好一些目录信息,这些都是一定开发人员可以自定义的东西。然后根据配置目录信息,CI会把一些以后会有用的东西定义为常量 168* ,为什么要这样做呢?因为以后会在很多不同地方,例如CI里面的各个组件都会用到路径相关的信息,在这里统一计算并定义,以后方 169* 便引用和修改。 170* 第三,引入CodeIgniter.php进行工作。 171* 172* 移步至核心文件目录下的core/CodeIgniter.php: http://calixwu.com/2014/11/codeigniter-yuanmafenxi-codeigniter-php.html 173*/
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )