如何在另一个配置密钥中使用一个配置密钥?

时间:2015-06-24 02:25:17

标签: php laravel-5

在Laravel 4的级联配置文件中,我能够从另一个配置文件中引用一个配置密钥。例如,我喜欢将app.debug设置为true或false,然后通过将相关设置设置为!Config::get('app.debug'),我可以将错误报告切换到Sentry,与其他配置文件中的错误报告相反。

我知道这有点毛茸茸,因为大概是否可以找到配置值取决于文件的加载顺序。但我每次都设法让它运转起来。

我在Laravel 5中没有运气。当我尝试在配置文件中执行Config::get(...)时,我收到“找不到类”错误。使用config(...)助手不会产生任何错误,但不会检索到这些值。

当然,约定是使用环境变量,.env文件和env(...)来获取值。这样,每个配置键都可以使用环境变量的值。这很好并且有效,但我有一些在环境之间共享的值,我确实希望将这些值中的一些提交给版本控制。

使用.env.example文件对我来说不是一个好的解决方案,因为我不想记住将值复制到每个环境的.env文件中,如果它们发生了变化。

如何以某种方式存储某些配置值,它们在环境之间共享,存在于版本控制中,并且可以在多个配置文件中引用?

1 个答案:

答案 0 :(得分:0)

这是我的解决方案,有效,但我对其他可能性感兴趣。

添加一个新的共享文件,签入VCS,名为.env.shared。它的结构就像.env。修改bootstrap/app.php以加载这些变量(除.env之外):

// Load shared environment variables
$app->afterLoadingEnvironment(function () use ($app) {
    Dotenv::load($app->basePath(), '.env.shared');
});

我在$app实例化后立即添加了这个。