一、配置格式
1、PHP数组定义
默认所有配置文件的定义格式均采用返回PHP数组的方式,配置参数不区分大小写。
如果使用二维数组来配置更多的信息,则二级参数配置区分大小写。格式为:
//项目配置文件return array(
    'DEFAULT_MODULE'     => 'Index', //默认模块
    'URL_MODEL'          => '2',     //URL模式
    'SESSION_AUTO_START' => true,    //是否开启session
    'USER_CONFIG'        => array(
        'USER_AUTH' => true,
        'USER_TYPE' => 2,
    ),
    //更多配置参数
    //...
);
 
2、其他格式
也可以采用yaml/json/xml/ini格式的配置文件支持。
应用入口文件中定义应用的配置文件的后缀,定义后,应用的配置文件(包括模块的配置文件)后缀都统一采用该后缀。例如:
define('CONF_EXT','.ini');     // 配置自定义配置格式(后缀)
 
3、自定义格式
define('CONF_EXT','.test'); // 配置自定义配置格式(后缀)
define('CONF_PARSE','parse_test'); // 对应的解析函数,CONF_PARSE定义的解析函数返回值必须是一个PHP索引数组。
假设我们的自定义配置格式是类似var1=value1&var2=value2 之类的字符串,那么parse_test定义如下:
function parse_test($str){
    parse_str($str,$config);
    return (array)$config;
}
 
二、配置加载
应用的配置文件是自动加载的,加载的顺序是:惯例配置->应用配置->模式配置->调试配置->状态配置->模块配置->扩展配置->动态配置
1、惯例配置
     位于ThinkPHP/Conf/convention.php
 
2、应用配置
     默认位于Application/Common/Conf/config.php
     调用所有模块之前都会首先加载的公共配置文件
 
3、模式配置(可选)
     如果使用了普通应用模式之外的应用模式,可以为应用模式单独定义配置文件,仅在运行该模式下面才会加载。
     文件命名规范是: Application/Common/Conf/config_应用模式名称.php
 
4、调试配置(可选)
      如果开启调试模式的话,则会自动加载框架的调试配置文件(位于ThinkPHP/Conf/debug.php)和应用调试配置文件(位于Application/Common/Conf/debug.php
 
5、状态配置(可选)
     每个应用都可以在不同的情况下设置自己的状态(或者称之为应用场景),并且加载不同的配置文件。
     如: 在公司和家里分别设置不同的数据库测试环境,可以这样处理:
     在入口文件中定义
     define('APP_STATUS','office'); 自动加载该状态对应的配置文件(位于Application/Common/Conf/office.php)。// 公司
     define('APP_STATUS','home'); 自动加载该状态对应的配置文件(位于Application/Common/Conf/home.php)。        // 家
     
6、模块配置
     位于Application/当前模块名/Conf/config.php
     每个模块会自动加载自己的配置文件。
     如果使用了普通模式之外的其他应用模式,可以为应用模式单独定义配置文件,仅在运行该模式下面才会加载
     命名规范为: Application/当前模块名/Conf/config_应用模式名称.php
     支持独立的状态配置文件,命名规范为: Application/当前模块名/Conf/应用状态.php
 
三、读取配置
统一使用系统提供的C方法来读取已有的配置。
用法:C('参数名称')    
说明:
1)配置参数不区分大小写,建议大写。名称只能是数字、字母、下划线,不允许“.”和特殊字符;
2)配置参数是全局有效的,因此C方法可以在任何地方读取任何配置,即使某个设置参数已经生效过期了。
 
1、读取配置
eg.  读取当前的URL模式配置参数:$model = C('URL_MODEL'); // 如果url_model尚未存在设置,则返回NULL。
 
2、读取默认配置:可以在读取的时候设置默认值
eg. C('my_config',null,'default_config'); // 如果my_config尚未设置的话,则返回default_config字符串。
 
3、读取二维配置
C('USER_CONFIG.USER_TYPE'); //获取用户配置中的用户类型设置
 
四、动态配置
用法:C('参数名称','新的参数值')
说明: 动态配置赋值仅对当前请求有效,不会对以后的请求造成影响。
eg. C('DATA_CACHE_TIME',60); // 动态改变缓存有效期
 
五、扩展配置
支持自动加载额外的自定义配置文件,并且配置格式和项目配置一样。
用法:'LOAD_EXT_CONFIG' => '文件1', '文件2''文件3'……(多个文件用逗号隔开)。
 
六、批量配置
用法:
$config = array('config1'=>'val1','config2'=>'val2',...)  // config是一个关联数组 键值就是配置参数 值就是配置值
C($config); // 合并配置参数到全局配置

ThinkPHP 3.2.3(二)配置的更多相关文章

  1. ThinkPHP 关联模型(二十)

    原文:ThinkPHP 关联模型(二十) ThinkPHP关联模型 两表关联查询:Message 和  user  关联条件uid(参考手册:模型->关联模型) 步骤: 一:创建Message表 ...

  2. ThinkPHP中的视图二

    ThinkPHP中的视图 1.模板注释 在实际项目开发中,经常要使用注释功能,如果是ThinkPHP框架,则可以在模板文件中使用如下方式进行注释: {// 注释内容 } :单行注释 {/* 注释内容 ...

  3. ThinkPHP框架基础知识二

    一.空操作和空控制器处理 空操作:没有指定的操作方法:空控制器:没有指定控制器,例如: http://网址/index.php/Home/Main/login  正常 http://网址/index. ...

  4. Struts2入门(二)——配置拦截器

    一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...

  5. Thinkphp框架感悟(二)

    这次主要分析一下I方法 /** * 获取输入参数 支持过滤和默认值 * 使用方法: * <code> * I('id',0); 获取id参数 自动判断get或者post * I('post ...

  6. ThinkPHP讲解(十二)——文本编辑器和ajax传址

    一.文本编辑器 1.首先,在网上下载ueditor文件 2.在要添加文本编辑器的页面中引用ueditor文件中的js文件 <script type="text/javascript&q ...

  7. SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移

    SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移 上一篇文章已经为配置镜像数据库做好了准备,接下来就要进入真正的配置阶段 一.在镜像数据库服务器上设置安全性并启动数据 ...

  8. ThinkPHP的cookide保存二维数组的方法

    ThinkPHP中的cookie是不支持二维数组的. 如果要保存二维数组.只能特殊处理 $data[263] = array('gid'=>263,'num'=>1); $data[266 ...

  9. 小记搭建WAPM运行ThinkPHP时所需要的配置

    最近因为项目而接触到了Thinkphp,正在上手中.但昨天遇到几个问题,一下子牵连出之前搭建WAPM(windows+apache+PHP+MySQL)遗留的配置问题. aphache\conf目录下 ...

  10. ThinkPHP pdo连接Oracle的配置写法,提示报错

    'DB_TYPE' => 'pdo', // 数据库类型 'DB_USER' => 'user101', // username 'DB_PWD' => 'zb~!@#$%', // ...

随机推荐

  1. php变量 写时改变 写时复制

    写时复制 $var = 1; $var2 = $var; #此时$var2 与 $var 指向同一个zval refcount = 2: $var = 2; # 此时$val 改变 所以 $var 与 ...

  2. MongoDB 可视化工具RoboMongo --- windows

    去官网下载安装包https://robomongo.org/download随便找一个目录进行安装(当然不要在c盘,和mongo安装路径无关) 安装完成后,启动MongoDB MongoDB的安装和使 ...

  3. Hadoop深入浅出实战经典–第02讲

    本文转载:通通学--知识学习与分享平台 Hadoop的核心 HDFS: Hadoop Distributed File System 分布式文件系统 MapReduce:并行计算框架 Yarn:集群资 ...

  4. Webview组件和HTML的介绍

    Deviceone平台并不是基于html5的跨平台开发工具.我们开发一个app都是使用原生的组件,但是在某些场景下html5也是非常好的选择,比如复杂的图文混排(类似新闻),比如报表chart之类用h ...

  5. 基于springMVC+angular+bootstrap+mysql的简易购物网站搭建

    https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=10&cad=rja& ...

  6. 一文说尽C++赋值运算符重载函数(operator=)

    写在前面: 关于C++的赋值运算符重载函数(operator=),网络以及各种教材上都有很多介绍,但可惜的是,内容大多雷同且不全面.面对这一局面,在下在整合各种资源及融入个人理解的基础上,整理出一篇较 ...

  7. ubuntu文件夹建立软链接方法

    1:预备知识 -s 是代号(symbolic)的意思. 这里有两点要注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化:第二,ln的链接又软链 ...

  8. getRuntime

    private static void test() { try { Process process = Runtime.getRuntime().exec("cmd"); Dat ...

  9. HTML5 CANVAS 实现图片压缩和裁切

    原文地址:http://leonshi.com/2015/10/31/html5-canvas-image-compress-crop/?utm_source=tuicool&utm_medi ...

  10. an interview question(4)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 写这篇博客前请让博主先吐糟下自己的PC. i3+2G内存+开了一上午=C盘剩下0字节+打开VS2012花了半个小时+一晚上的心情不好 吐槽完PC, ...