配置定义
可以直接在相应的全局或应用配置文件中修改或者增加配置参数,如果你要增加额外的配置文件,直接放入配置目录即可(文件名小写)。
除了一级配置外,配置参数名严格区分大小写,建议是使用小写定义配置参数的规范。
由于架构设计原因,下面的配置只能在环境变量中修改。
环境变量定义
可以在应用的根目录下定义一个特殊的.env环境变量文件,用于在开发过程中模拟环境变量配置(该文件建议在服务器部署的时候忽略),.env文件中的配置参数定义格式采用ini方式,例如:
APP_DEBUG = true
默认安装后的根目录有一个
.example.env环境变量示例文件,你可以直接改成.env文件后进行修改。
如果你的部署环境单独配置了环境变量( 环境变量的前缀使用
PHP_),那么请删除.env配置文件,避免冲突。
环境变量配置的参数会全部转换为大写,值为 off,no 和 false 等效于 布尔值false,值为 yes 、on和 true 等效于 布尔值的true。
注意,环境变量不支持数组参数,如果需要使用数组参数可以,可以使用
[DATABASE]
USERNAME = root
PASSWORD = 123456
如果要设置一个没有键值的数组参数,可以使用
PATHINFO_PATH[] = ORIG_PATH_INFO
PATHINFO_PATH[] = REDIRECT_PATH_INFO
PATHINFO_PATH[] = REDIRECT_URL
获取环境变量的值可以使用下面的方式获取:
Env::get('database.username');
Env::get('database.password');
Env::get('PATHINFO_PATH');
要使用Env类,必须先引入think\facade\Env。
环境变量的获取不区分大小写
可以支持默认值,例如:
// 获取环境变量 如果不存在则使用默认值root
Env::get('database.username', 'root');
可以直接在配置文件中使用环境变量进行本地环境和服务器的自动配置,例如:
return [
'hostname' => Env::get('hostname','127.0.0.1'),
];
多环境变量配置支持
支持定义多个环境变量配置文件,配置文件命名规范为
.env.example
.env.testing
.env.develop
然后,需要在入口文件中指定部署使用的环境变量名称:
// 执行HTTP应用并响应
$http = (new App())->setEnvName('develop')->http;
$response = $http->run();
$response->send();
$http->end($response);
或者你可以继承App类 然后重载loadEnv方法实现 动态切换环境变量配置。
其它配置格式支持
默认的配置文件都是PHP数组方式,如果你需要使用其它格式的配置文件,你可以通过改变CONFIG_EXT环境变量的方式来更改配置类型。
在应用根目录的.env或者系统环境变量中设置
CONFIG_EXT=".ini"
支持的配置类型包括.ini、.xml、.json 、.yaml和 .php 在内的格式支持,配置后全局或应用配置必须统一使用相同的配置类型。
配置获取
要使用Config类,首先需要在你的类文件中引入
use think\facade\Config;
然后就可以使用下面的方法读取某个配置参数的值:
读取一级配置的所有参数(每个配置文件都是独立的一级配置)
Config::get('app');
Config::get('route');
读取单个配置参数
Config::get('app.app_name');
Config::get('route.url_domain_root');
读取数组配置(理论上支持无限级配置参数读取)
Config::get('database.default.host');
判断是否存在某个设置参数:
Config::has('template');
Config::has('route.route_rule_merge');
参数批量设置
Config类不再支持动态设置某个配置参数,但可以支持批量设置更新配置参数。
// 批量设置参数
Config::set(['name1' => 'value1', 'name2' => 'value2'], 'config');
// 获取配置
Config::get('config');
系统配置文件
下面系统自带的配置文件列表及其作用:
具体的配置参数及默认值可以直接查看应用config目录下面的相关文件内容。
评论区