配置定义
可以直接在相应的应用或模块配置文件中修改或者增加配置参数,如果你要增加额外的配置文件,直接放入应用或模块配置目录即可(文件名小写)。
除了一级配置外,配置参数名严格区分大小写,建议是使用小写定义配置参数的规范。
另外涉及到配置参数的定义有效性问题,下列配置参数在模块配置中定义(包括动态配置)无效,而必须在应用配置中设置:
配置参数 | 描述 |
---|---|
app_debug | 应用调试模式(支持环境变量配置) |
app_trace | 应用trace(支持环境变量配置) |
class_suffix | 类后缀 |
default_filter | 默认过滤机制 |
root_namespace | 根命名空间 |
pathinfo_depr | PATH_INFO分隔符 |
url_route_must | 路由强制模式 |
auto_bind_module | 自动绑定模块 |
default_lang | 默认语言 |
lang_switch_on | 多语言切换 |
由于架构设计原因,下面的配置只能在环境变量中修改。
配置参数 | 描述 |
---|---|
app_namespace | 应用命名空间 |
config_ext | 配置文件后缀 |
其它配置格式支持
默认的配置文件都是PHP数组方式,如果你需要使用其它格式的配置文件,你可以通过改变CONFIG_EXT
环境变量的方式来更改配置类型。
在应用根目录的.env
或者系统环境变量中设置
CONFIG_EXT=".ini"
支持的配置类型包括.ini
、.xml
、.json
、.yaml
和 .php
在内的格式支持,配置后应用配置及模块配置必须统一使用相同的配置类型。
二级配置
配置参数的值同样支持数组,下面是示例:
return [
'user' => [
'type' => 1,
'name' => 'thinkphp',
],
'db' => [
'type' => 'mysql',
'user' => 'root',
'password' => '',
],
];
环境变量定义
可以在应用的根目录下定义一个特殊的.env
环境变量文件,用于在开发过程中模拟环境变量配置(该文件建议在服务器部署的时候忽略),.env
文件中的配置参数定义格式采用ini
方式,例如:
APP_DEBUG = true
APP_TRACE = true
如果你的部署环境单独配置了环境变量( 环境变量的前缀使用
PHP_
),那么请删除.env
配置文件,避免冲突。
环境变量配置的参数会全部转换为大写,值为 null
,no
和 false
等效于 ""
,值为 yes
和 true
等效于 "1"
。
注意,环境变量不支持数组参数,如果需要使用数组参数可以,使用下划线分割定义配置参数名:
DATABASE_USERNAME = root
DATABASE_PASSWORD = 123456
获取环境变量的值使用下面的方式:
Env::get('database_username');
Env::get('database_password');
如果使用
[DATABASE]
USERNAME = root
PASSWORD = 123456
获取环境变量的值可以使用下面的方式获取:
Env::get('database.username');
Env::get('database.password');
要使用Env
类,必须先引入think\facade\Env
或者\Env
。
环境变量的获取不区分大小写
可以支持默认值,例如:
// 获取环境变量 如果不存在则使用默认值root
Env::get('database.username','root');
可以直接在配置文件中使用环境变量进行本地环境和服务器的自动配置,例如:
return [
'hostname' => Env::get('hostname','127.0.0.1'),
];
环境变量中设置的
APP_DEBUG
和APP_TRACE
参数会自动生效(优先于应用的配置文件),其它参数则必须通过Env::get
方法才能读取。
配置获取
要使用Config
类,首先需要在你的类文件中引入
use think\facade\Config;
或者(因为系统做了类库别名,其实就是调用think\facade\Config
)
use Config;
然后就可以使用下面的方法读取某个配置参数的值:
echo Config::get('配置参数1');
如果你需要读取某个一级配置的所有配置参数,可以使用
Config::pull('app');
或者使用
Config::get('app.');
读取所有的配置参数:
dump(Config::get());
判断是否存在某个设置参数:
Config::has('配置参数2');
助手函数
系统定义了一个助手函数config
,以上可以简化为:
echo config('配置参数1');
5.1
的配置参数全部采用二级配置的方式(默认一级配置为app),所以当你使用config('name')
的时候其实相当于使用:
config('app.name')
支持获取多级配置参数值,直接使用(必须从一级开始写)
config('app.name1.name2')
获取某个一级配置的所有参数可以使用
config('app.');
读取所有的配置参数:
dump(config());
或者你需要判断是否存在某个设置参数:
config('?配置参数2');
动态设置(慎用)
V5.1.18+
版本以上,不再建议使用动态配置,由于容器的特性,可能不会生效。
在控制器或者行为里面可以使用set
方法或者助手函数动态设置参数(不过需要注意的是,动态设置生效的前提是该参数尚未被使用),格式:
Config::set('配置文件名.配置参数','配置值');
// 或者使用助手函数
config('配置文件名.配置参数','配置值');
动态设置的参数,最多支持二级,例如:
Config::set('app_trace', true);
// 没有指定配置文件名的话 等效于下面的方式
Config::set('app.app_trace', true);
// 助手函数的方式
config('app_trace', true);
也可以传入数组批量设置,并在第二个参数传入一级配置名,例如:
Config::set([
'app_trace'=>true,
'show_error_msg'=>true
], 'app');
// 或者使用助手函数
config([
'app_trace'=>true,
'show_error_msg'=>true
],'app');
系统配置文件
下面系统自带的配置文件列表及其作用(配置文件可能同时存在应用配置文件和模块配置文件两个同名文件):
配置文件名 | 描述 |
---|---|
app.php | 应用配置 |
cache.php | 缓存配置 |
cookie.php | Cookie配置 |
database.php | 数据库配置 |
log.php | 日志配置 |
session.php | Session配置 |
template.php | 模板引擎配置 |
trace.php | 页面Trace配置 |
paginate.php | 分页配置 |
具体的配置参数可以直接查看应用config
目录下面的相关文件内容。
使用Yaconf
定义(V5.1.22+
)
从V5.1.22+
版本开始(并且要求PHP7+
),可以支持使用Yaconf
统一定义配置,但不支持动态设置。
V5.1.23+
版本开始,可以使用setYaconf
方法指定Yaconf
使用的独立配置文件,例如:
// 建议在应用的公共函数文件中进行设置
think\facade\Config::setYaconf('thinkphp');
设置后,你只需要在thinkphp.ini
一个文件进行项目的配置,而无需分开多个文件,避免和其它项目冲突。
同时,你还可以在配置文件中,使用yaconf
助手函数(用法类似env
函数)
return [
'config_name' => yaconf('config_name', 'default_value'),
];
setYaconf
方法的设置对yaconf
助手函数依然有效