环境变量,顾名思义就是在不同的系统环境,同一个变量的值可以有所不同。
如开发环境、测试环境与正式环境下,数据库配置、静态资源文件Url前缀、缓存、各种key等配置都不相同,对于提交到仓库中的代码,理论上不应该将与环境相关的这些参数传进去。但怎样实现有所区分,各自维护呢?没有经历过团队协作开发和利用工具自动化部署代码的人应该不会理解其中的小痛苦。环境变量就是一个比较好的实现方式了。
TP的v5中利用PHP对环境变量的读取以及模拟环境变量的支持,可以很好的实现这种需求。
以下为引用http://www.kancloud.cn/manual/thinkphp5/189989:
在开发过程中,可以在应用根目录下面的.env来模拟环境变量配置,.env文件中的配置参数定义格式采用ini方式,例如:
app_debug = true
app_trace = true
如果你的部署环境单独配置了环境变量,那么请删除.env配置文件,避免冲突。
使用下划线分割定义配置参数名:
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方法才能读取。
环境变量的配置方法在此不详述了。