2016-06-20 45 views
3

在Laravel 4,您可以设置基于环境的config文件夹结构:Laravel 5环境配置数组?

/config/app.php 
/config/dev/app.php 
/config/staging/app.php 
/config/testing/app.php 

你能和Laravel 5做到这一点?我理解.env的概念,我用它来定义我在哪个环境。但是我需要定义一个配置值,它是一个任意长度的数组,你不能用.env文件来完成。

的我想要实现的一个例子:

if (in_array($request->input('value'), config('app.valid_values')) { 
    // do something 
} 

valid_values仅仅是值的数组。这是任意长度的,所以你不能将它们设置在.env文件,如:

VALID_VALUE1=... 
VALID_VALUE2=... 
etc. 

和阵列需要为每个环境不同。

这在使用环境配置文件夹的Laravel 4中很容易实现。但是你如何用Laravel 5做到这一点?

+0

从Laravel 4升级到Laravel 5的未来读者可能会对[Laravel Shift](https://laravelshift.com)感兴趣。这是一项自动升级过程并根据您的特定项目提供自定义反馈的服务。 *免责声明:我创建了Shift *。 –

回答

3

如果你需要创建值的数组,你可以创建字符串格式,当你需要,你可以解析它们

MY_ARRAY_VALUE=1,2,house,cat,34234 

当你需要他们

$myArrayValue = explode(',', env('MY_ARRAY_VALUE')); 

或保存你的价值观在JSON,并让他们与json_encode()

$myArrayValue = json_decode(env('MY_ARRAY_VALUE'), true); 

额外的信息:

在Laravel 5上,您需要在一个.env文件中翻译所有配置文件。

在每个环境中,您的.env文件将与此环境的值不同。

要设置你的环境,你需要改变你.ENV文件

APP_ENV=local 

APP_ENV的价值,并可以在该文件中创建自己的变量

https://laravel.com/docs/5.2/configuration#environment-configuration

这是Laravel 5.0升级指南摘录 https://laravel.com/docs/5.2/releases#laravel-5.0

Laravel 5不再使用各种令人困惑的嵌套环境配置目录,而是使用Vance Lucas的DotEnv。该库提供了一种超级简单的方式来管理您的环境配置,并使Laravel 5中的环境检测变得轻而易举。有关更多详细信息,请查看完整的配置文档。

您可以在这里找到一个默认的ENV文件:https://github.com/laravel/laravel/blob/master/.env.example

它往往是有帮助的基础上,应用程序在运行的环境不同的配置值。例如,您可能希望使用。本地缓存驱动程序不同于您在生产服务器上的缓存驱动使用基于环境的配置很容易。

Laravel使用Vance Lucas提供的DotEnv PHP库来做到这一点。在新的Laravel安装中,应用程序的根目录将包含一个.env.example文件。如果您通过Composer安装Laravel,则该文件将自动重命名为.env。否则,您应该手动重命名文件。

+0

我已更新我的问题 – Sangar82