CodeIgniter源码分析(二) 入口文件index.php

 1 <?php
 2
 3 /* 设定环境 */
 4 define(‘ENVIRONMENT‘, ‘development‘);
 5
 6 if (defined(‘ENVIRONMENT‘))
 7 {
 8     switch (ENVIRONMENT)
 9     {
10         case ‘development‘:
11             error_reporting(E_ALL);
12         break;
13
14         case ‘testing‘:
15         case ‘production‘:
16             error_reporting(0);
17         break;
18
19         default:
20             exit(‘The application environment is not set correctly.‘);
21     }
22 }
23
24 /* 系统文件夹名 */
25 $system_path = ‘system‘;
26
27 /* 应用文件夹名 */
28 $application_folder = ‘application‘;
29
30 // 把当前的目录改变为指定的目录
31 if (defined(‘STDIN‘))
32 {
33     chdir(dirname(__FILE__));
34 }
35
36 if (realpath($system_path) !== FALSE)        //返回绝对路径
37 {
38     $system_path = realpath($system_path).‘/‘;
39 }
40
41 // 系统路径
42 $system_path = rtrim($system_path, ‘/‘).‘/‘;
43
44
45 if ( ! is_dir($system_path))
46 {
47     exit("系统文件路径设置错误");
48 }
49     //当前文件的名字
50     define(‘SELF‘, pathinfo(__FILE__, PATHINFO_BASENAME));
51
52     //文件扩展名
53     define(‘EXT‘, ‘.php‘);
54
55     // Path to the system folder
56     define(‘BASEPATH‘, str_replace("\\", "/", $system_path));
57
58     // Path to the front controller (this file)
59     define(‘FCPATH‘, str_replace(SELF, ‘‘, __FILE__));
60
61     // Name of the "system folder"
62     define(‘SYSDIR‘, trim(strrchr(trim(BASEPATH, ‘/‘), ‘/‘), ‘/‘));
63
64     // The path to the "application" folder
65     if (is_dir($application_folder))
66     {
67         define(‘APPPATH‘, $application_folder.‘/‘);
68     }
69     else
70     {
71         if ( ! is_dir(BASEPATH.$application_folder.‘/‘))
72         {
73             exit("应用文件夹设置错误");
74         }
75
76         define(‘APPPATH‘, BASEPATH.$application_folder.‘/‘);
77     }
78
79 /*
80  * --------------------------------------------------------------------
81  * LOAD THE BOOTSTRAP FILE
82  * --------------------------------------------------------------------
83  *
84  * And away we go...
85  *
86  */
87 require_once BASEPATH.‘core/CodeIgniter.php‘;
88
89 /* End of file index.php */
90 /* Location: ./index.php */

该文件主要是设置项目运行环境

设置系统系统目录

设置部分常量:SELF、EXT、BASEPATH...

时间: 2024-08-05 09:35:18

CodeIgniter源码分析(二) 入口文件index.php的相关文章

CodeIgniter框架——源码分析之入口文件index.php

CodeIgniter框架的入口文件主要是配置开发环境,定义目录常量,加载CI的核心类core/CodeIgniter.php. 源码分析如下: <?php //这个文件是入口,后期所有的文件都要在这里执行. /*----------------------------------------------- * 系统环境配置常量 * 能够配置错误显示级别 * ----------------------------------------------- * 默认情况下: * developmen

[Android]Volley源码分析(二)Cache

Cache作为Volley最为核心的一部分,Volley花了重彩来实现它.本章我们顺着Volley的源码思路往下,来看下Volley对Cache的处理逻辑. 我们回想一下昨天的简单代码,我们的入口是从构造一个Request队列开始的,而我们并不直接调用new来构造,而是将控制权反转给Volley这个静态工厂来构造. com.android.volley.toolbox.Volley: public static RequestQueue newRequestQueue(Context conte

baksmali和smali源码分析(二)

这一节,主要介绍一下 baksmali代码的框架. 我们经常在反编译android apk包的时候使用apktool这个工具,其实本身这个工具里面对于dex文件解析和重新生成就是使用的baksmali 和smali这两个jar包其中 baksmali是将 dex文件转换成便于阅读的smali文件的,具体使用命令如下:java -jar baksmali.jar classes.dex -o myout其中myout是输出的文件夹 而smali是将smali文件重新生成回 dex文件的具体使用的命

[Android]Fragment源码分析(二) 状态

我们上一讲,抛出来一个问题,就是当Activity的onCreateView的时候,是如何构造Fragment中的View参数.要回答这个问题我们先要了解Fragment的状态,这是Fragment管理中非常重要的一环.我们先来看一下FragmentActivity提供的一些核心回调: @Override protected void onCreate(Bundle savedInstanceState) { mFragments.attachActivity(this, mContainer,

Tomcat源码分析——server.xml文件的加载与解析

前言 作为Java程序员,对于tomcat的server.xml想必都不陌生.本文基于Tomcat7.0的Java源码,对server.xml文件是如何加载和解析进行分析. 加载过程分析 Bootstrap的load方法用于加载tomcat的server.xml,实际是通过反射调用Catalina的load方法,代码如下: /** * Load daemon. */ private void load(String[] arguments) throws Exception { // Call

JAVA Collection 源码分析(二)之SubList

昨天我们分析了ArrayList的源码,我们可以看到,在其中还有一个类,名为SubList,其继承了AbstractList. // AbstractList类型的引用,所有继承了AbstractList都可以传进来 private final AbstractList<E> parent; // 这个是其实就是parent的偏移量,从parent中的第几个元素开始的 private final int parentOffset; private final int offset; int s

netty 源码分析二

以服务端启动,接收客户端连接整个过程为例分析, 简略分为 五个过程: 1.NioServerSocketChannel 管道生成, 2.NioServerSocketChannel 管道完成初始化, 3.NioServerSocketChannel注册至Selector选择器, 4.NioServerSocketChannel管道绑定到指定端口,启动服务 5.NioServerSocketChannel接受客户端的连接,进行相应IO操作 Ps:netty内部过程远比这复杂,简略记录下方便以后回忆

哇!板球 源码分析二

游戏主页面布局 创建屏下Score标签 pLabel = CCLabelTTF::create("Score", "Arial", TITLE_FONT_SIZE); //分数标签 //设置标签字体的颜色 pLabel->setColor (ccc3(0, 0, 0)); //设置文本标签的位置 pLabel->setPosition ( ccp ( SCORE_X, //X坐标 SCORE_Y //Y坐标 ) ); //将文本标签添加到布景中 this

【梦幻连连连】源码分析(二)

转载请注明出处:http://blog.csdn.net/oyangyufu/article/details/24736711 GameLayer场景界面效果: 源码分析: GameLayer场景初始化,主要是初始化加载界面及背景音乐 bool GameLayer::init() { float dt=0.0f; if ( !CCLayerColor::initWithColor(ccc4(255, 255, 255, 255))) { return false; } this->initLoa

基于TCP网络通信的自动升级程序源码分析-客户端接收文件

升级程序客户端接收文件 /// <summary> /// 文件数据缓存 索引是 ConnectionInfo对象 数据包的顺序号 值是数据 /// </summary> Dictionary<ConnectionInfo, Dictionary<long, byte[]>> incomingDataCache = new Dictionary<ConnectionInfo, Dictionary<long, byte[]>>();