Laravel 5环境配置数组?

hc8w905p  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(110)

在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中做到这一点呢?

5vf7fwbs

5vf7fwbs1#

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

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文件。
在每个环境中,您的.env文件将与此环境的值不同。
要设置您的环境,您需要在.env文件中更改APP_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现在使用了万斯卢卡斯的DotEnv,而不是各种令人困惑的嵌套环境配置目录。这个库提供了一个超级简单的方法来管理您的环境配置,并使Laravel 5中的环境检测变得轻而易举。有关详细信息,请查看完整的配置文档。
您可以在此处找到默认的.env文件:https://github.com/laravel/laravel/blob/master/.env.example
根据应用程序运行的环境使用不同的配置值通常很有帮助。例如,您可能希望在本地使用与生产服务器上不同的缓存驱动程序。使用基于环境的配置很容易。
Laravel使用了万斯卢卡斯的DotEnv PHP库。在一个新的Laravel安装中,你的应用程序的根目录将包含一个.env.example文件。如果你通过Composer安装Laravel,这个文件将自动重命名为. env。否则,你应该手动重命名文件。

tpgth1q7

tpgth1q72#

Phpdotenv通用

Phpdotenv是关于在环境中存储值,而不是通用配置库。环境是UNIX概念,值总是被解释为字符串。转换为不同的数据类型,如数组或布尔值,即使方便也超出了这个类的范围。

Laravel配置系统

Laravel的配置系统已经分离了。phpdotenv做环境,laravel做配置。然后一旦配置完成,环境就被忽略了。将环境变量从字符串解析成传递给laravel的任何内容(无论是它们的env函数,还是在配置文件中爆炸)。

良好实践

换句话说,使用Config::get()来获得具有所需结构的特定conf文件,这样就可以获得所需的内容。
根据Laravel的指导方针,当它在config文件夹之外时,你不应该在代码中直接使用env()。使用config()是一个很好的做法。在配置文件中使用env()从.env文件中获取数据。

tcomlyy6

tcomlyy63#

array_map('trim', array_filter(explode(',', env('ARRAY_VALUE'))))

字符串
这将修剪,也防止在结果数组中有空项目时,env是空字符串或有额外的逗号。

相关问题