Laravel 5环境配置数组?

时间:2016-06-20 21:22:45

标签: php laravel

在Laravel 4中,您可以设置基于环境的配置文件夹结构:

/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做到这一点?

2 个答案:

答案 0 :(得分:11)

如果需要在值上创建数组,可以使用字符串格式创建,并在需要时可以解析它们

MY_ARRAY_VALUE=1,2,house,cat,34234

当你需要它们时

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

或者将您的值保存在JSON中,并使用json_decode()

获取它们
$myArrayValue  = json_decode(env('MY_ARRAY_VALUE'), true);

额外信息:

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

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

要设置环境,您需要更改APP_ENV文件中.env的值

APP_ENV=local

您可以在该文件中创建自己的变量

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。否则,您应该手动重命名该文件。

答案 1 :(得分:0)

通常用于Phpdotenv

Phpdotenv是关于将值存储在环境中,而不是通用配置库中。环境是UNIX的概念,其值始终被解释为字符串。即使方便,也可以转换为不同的数据类型,例如数组或布尔值。

Laravel配置系统

Laravel的配置系统已被分离。 phpdotenv做环境,laravel做配置。然后,一旦配置完成,环境将被忽略。将字符串中的环境变量解析为传递给laravel的任何内容(天气是它们的env函数,或者在配置文件中爆炸)的问题。

良好做法

换句话说,使用Config :: get()获取具有所需结构的特定conf文件,您将拥有所需的内容。

根据Laravel指南,当env()位于config文件夹之外时,切勿直接在代码中使用env()。使用config()是一个好习惯。在配置文件中,使用env()从.env文件获取数据。