Thinkphp5.1中使用.env模拟环境变量配置,让配置更优雅!

2018-05-05 小惟 271

自从thinkphp5发布以来,可以说越来越优雅了,特别是tp5.1的发布,竟然支持.env配置文件啦!想必熟悉那个以优雅著称的某框架的同学一定不陌生。

支持多种配置格式

thinkphp5.1支持的配置类型包括.ini、.xml、.json 、.yaml和 .php。

那么我们的.env就是采用ini方式的配置格式。用于在开发过程中模拟环境变量配置(该文件建议在服务器部署的时候忽略)。

配置.env

在项目根目录(不是application目录!!!)创建.env文件,配置格式例如:

APP_DEBUG =trueAPP_TRACE =true[DATABASE]HOSTNAME = 127.0.0.1DATABASE = test
HOSTPORT = 3306USERNAME = root
PASSWORD = 123456PREFIX = test_

这样我们就可以使用Env类来读取配置:

// 获取环境变量 如果不存在则使用默认值rootEnv::get('database.username','root');

当然你也可以使用助手函数:

env('database.username', 'root')

环境变量的获取不区分大小写

环境变量中设置的APP_DEBUG和APP_TRACE参数会自动生效(优先于应用的配置文件),其它参数则必须通过Env::get方法才能读取。

使用.env里的配置

在config/database.php中:

return [
// ……
// 服务器地址
'hostname' => env('database.hostname', '127.0.0.1'),
// 数据库名
'database' => env('database.database', 'test'),
// 用户名
'username' => env('database.username', 'root'),
// 密码
'password' => env('database.password', '123456'),
// 端口
'hostport' => env('database.hostport', '3306'),
// 数据库表前缀
'prefix' => env('database.prefix', ''),
// ……];

其他配置,同样可以这样配置和使用。

最后

线上部署copy一份.env文件,修改好生产环境配置,切记一定忽略掉该文件,避免发布代码时又将线上的.env给替换掉了。

有了.env 文件,再也不用每次去改config里的配置啦!