<!-- 系统默认的配置文件目录就是应用目录(APP_PATH), 也就是默认的application下面,并分为应用配置 (整个应用有效)和模块配置(仅针对该模块有效)。 --> ├─application 应用目录 │ ├─config.php 应用配置文件 │ ├─database.php 数据库配置文件 │ ├─route.php 路由配置文件 │ ├─index index模块配置文件目录 │ │ ├─config.php index模块配置文件 │ │ └─database.php index模块数据库配置文件 <!-- 若是不但愿配置文件放到应用目录下面,能够在入口文件中定义独立的配置目录,添加CONF_PATH常量定义便可,以下: --> // 定义配置文件目录和应用目录同级 define('CONF_PATH', __DIR__.'/../config/'); // 扩展配置目录 <!-- 5.0.1开始增长了扩展配置目录的概念,在应用配置 目录或者模块配置目录下面增长extra子目录,下面 的配置文件都会自动加载,无需任何配置。 --> <!-- 若是你定义了CONF_PATH常量为config目录为例, 扩展配置目录以下: --> ├─application 应用目录 ├─config 配置目录 │ ├─config.php 应用配置文件 │ ├─database.php 数据库配置文件 │ ├─route.php 路由配置文件 │ ├─extra 应用扩展配置目录 │ ├─index index模块配置文件目录 │ │ ├─extra index模块扩展配置目录 │ │ ├─config.php index模块配置文件 │ │ └─database.php index模块数据库配置文件 <!-- 扩展配置文件的文件名(不含后缀)就是配置参数名,而且会和应用配置文件中的参数进行合并。 -->
配置参数名不区分大小写(由于不管大小写定义都会转换成小写),新版的建议是使用小写定义配置参数的规范。php
// 数组 项目配置文件 return [ // 默认模块名 'default_module' => 'index', // 默认控制器名 'default_controller' => 'Index', // 默认操做名 'default_action' => 'index', //更多配置参数 //... ]; // 二维数组 项目配置文件 return [ 'cache' => [ 'type' => 'File', 'path' => CACHE_PATH, 'prefix' => '', 'expire' => 0, ], ];
其余配置格式支持mysql
默认方式为PHP数组方式定义配置文件,你能够在入口文件定义CONF_EXT常量来更改成其它的配置类型:laravel
// 更改配置格式为ini格式
define('CONF_EXT', '.ini');sql
<!--ini格式配置示例:--> default_module=Index ;默认模块 default_controller=index ;默认控制器 default_action=index ;默认操做 <!--xml格式配置示例:--> <config> <default_module>Index</default_module> <default_controller>index</default_controller> <default_action>index</default_action> </config> <!--json格式配置示例:--> { "default_module":"Index", "default_controller":"index", "default_action":"index" }
二级配置thinkphp
配置参数支持二级,例如,下面是一个二级配置的设置和读取示例:数据库
$config = [ 'user' => [ 'type' => 1, 'name' => 'thinkphp', ], 'db' => [ 'type' => 'mysql', 'user' => 'root', 'password' => '', ], ]; // 设置配置参数 Config::set($config); // 读取二级配置参数 echo Config::get('user.type'); // 或者使用助手函数 echo config('user.type');
系统不支持二级以上的配置参数读取,须要手动分步骤读取。
有做用域的状况下,仍然支持二级配置的操做。json
惯例配置-》应用配置-》扩展配置-》场景配置-》模块配置-》动态配置
Config::set('配置参数','配置值'); // 或者使用助手函数 config('配置参数','配置值'); // 批量设置 Config::set([ '配置参数1'=>'配置值', '配置参数2'=>'配置值' ]); // 或者使用助手函数 config([ '配置参数1'=>'配置值', '配置参数2'=>'配置值' ]);
配置文件支持分离(也称为扩展配置),只须要在公共配置文件配置extra_config_list参数(V5.0.1版本已经废除该写法)。数组
例如,不使用独立配置文件的话,数据库配置信息应该是在config.php中配置以下: /* 数据库设置 */ 'database' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'thinkphp', // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库链接端口 'hostport' => '', // 数据库链接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式 'debug' => false, ], 若是须要使用独立配置文件的话,则首先在config.php中添加配置: 'extra_config_list' => ['database'], 定义以后,数据库配置就能够独立使用database.php文件,配置内容以下: /* 数据库设置 */ return [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'thinkphp', // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库链接端口 'hostport' => '', // 数据库链接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式 'debug' => false, ], 若是配置了extra_config_list参数,并同时在config.php和database.php文件中都配置的话,则database.php文件的配置会覆盖config.php中的设置。 独立配置文件的参数获取都是二维配置方式,例如,要获取database独立配置文件的type参数,应该是: Config::get('database.type'); 要获取完整的独立配置文件的参数,则使用: Config::get('database');
环境变量配置,在此框架中.env的用法与laravel的环境变量配置相同 ThinkPHP5.0支持使用环境变量配置。 在开发过程当中,能够在应用根目录下面的.env来模拟环境变量配置,.env文件中的配置参数定义格式采用ini方式,例如: app_debug = true app_trace = true 若是你的部署环境单独配置了环境变量,那么请删除.env配置文件,避免冲突。 环境变量配置的参数会所有转换为大写,值为 null,no 和 false 等效于 "",值为 yes 和 true 等效于 "1"。 ThinkPHP5.0默认的环境变量前缀是PHP_,也能够经过改变ENV_PREFIX常量来从新设置。 注意,环境变量不支持数组参数,若是须要使用数组参数能够,使用下划线分割定义配置参数名: database_username = root database_password = 123456 或者使用 [database] username = root password = 123456 获取环境变量的值可使用下面的两种方式获取: Env::get('database.username'); Env::get('database.password'); // 同时下面的方式也能够获取 Env::get('database_username'); Env::get('database_password'); 能够支持默认值,例如: // 获取环境变量 若是不存在则使用默认值root Env::get('database.username','root'); 能够直接在应用配置中使用环境变量,例如: return [ 'hostname' => Env::get('hostname','127.0.0.1'), ]; 环境变量中设置的app_debug和app_trace参数会自动生效(优先于应用的配置文件),其它参数则必须经过Env::get方法才能读取。