隐藏

CodeIgniter项目初始化之环境配置、SVN配置

发布:2014/7/10 15:49:13作者:管理员 来源:本站 浏览次数:1521

先来看一个实际的例子,项目中存在这样一个配置文件:
PHP复制代码
 
$STATUS = 'normal'; //测试为test,正式为normal
$KEY_INFO = array(
    'a_test' => array(
        'key' => 'a_test_key',
        'value' => 'a_test_value'
    ),
    'a_normal' => array(
        'key' => 'a_normal_key',
        'value' => 'a_normal_value'
    ),
    'b_test' => array(
        'key' => 'b_test_key',
        'value' => 'b_test_value'
    ),
    'b_normal' => array(
        'key' => 'b_normal_key',
        'value' => 'b_normal_value'
    ),
);
 
复制代码

生产环境和测试环境的开关通过$STATUS变量来控制,而$STATUS定义和配置文件在同一个文件中,这意味着每次发布的时候都需要把这个值改成normal,测试的时候在调整回来,这样就无缘无故增加了发布的难度和错误产生的几率,每次提交的时候都得小心翼翼。产生该问题的主要原因就是把环境和配置没有分离开,环境和配置耦合在一个文件里了。很多时候我们写一个类的时候也会有类似的做法,将类需要配置的信息直接写死在属性中,不方便调整。
所以多环境的配置是十分有必要的,而Codeigniter框架是支持多环境配置的,环境的配置在index.php入口文件的第21行
PHP复制代码
 
/*
 *---------------------------------------------------------------
 * APPLICATION ENVIRONMENT
 *---------------------------------------------------------------
 *
 * You can load different configurations depending on your
 * current environment. Setting the environment also influences
 * things like logging and error reporting.
 *
 * This can be set to anything, but default usage is:
 *
 *     development
 *     testing
 *     production
 *
 * NOTE: If you change these, also change the error_reporting() code below
 *
 */

    define('ENVIRONMENT', 'development');
 
复制代码

即CI开篇就定义了环境配置,那不同的环境配置会影响到哪些方面?
1、 报错机制。不同的环境设置的报错级别不同,如开发环境(development)会显示所有错误信息,而生成环境(production)则会屏蔽所有错误信息。
2、 加载的配置文件不同,从而实现多套环境配置。
在开发过程中会将数据库配置设置为测试服或本机,而生成环境下会修改为正式服。那这么多环境该如何设置?
先看看application目录下的config目录,该目录主要为系统的配置目录,如数据库配置、路由配置等。以数据库配置为例,当连接DB时,会读取config/database.php的配置文件,但这种情况是在没有自定义配置时。当我们定义ENVIRONMENT为development是,并创建config/development/database.php时,系统会从此环境来读取数据库配置,而非config/database.php
所以针对开发环境我们可以创建development目录,并将开发的配置文件放置于此目录下,创建production目录,用于发布时生产环境的配置,如下图所示:


注意:
对于个人定义的配置文件,若通过$this->load->config的方式加载,也适用多套环境,若是通过include加载则不行。
环境配置完之后还需要配合SVN的管理,方便日常的工作。那针对多种环境SVN要如何配置?
创建项目的时候,在config下创建development目录和production目录,并将两个目录提交到SVN,然后忽略两个目录里面的所有文件。那么其他人down下来的时候,会存在这两个目录,但目录是空的,若个人有特殊配置,拷贝相应的配置文件到ENVIRONMENT目录下即可,既可自定义,又无需担心提交到SVN。
至于怎么忽略文件夹里面的内容,可参考如下方式:
在development目录下随意创建个 a.txt 和 a 目录,选择两个文件,右键SVN选项中按扩展名忽略,并提交到SVN即可。
SVN应尽可能的保持干净,以免因疏忽而导致提交异常代码到SVN,从而影响到其他人的开发效率和生产环境的正常功能。