在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做到这一点?
答案 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是关于将值存储在环境中,而不是通用配置库中。环境是UNIX的概念,其值始终被解释为字符串。即使方便,也可以转换为不同的数据类型,例如数组或布尔值。
Laravel的配置系统已被分离。 phpdotenv做环境,laravel做配置。然后,一旦配置完成,环境将被忽略。将字符串中的环境变量解析为传递给laravel的任何内容(天气是它们的env函数,或者在配置文件中爆炸)的问题。
换句话说,使用Config :: get()获取具有所需结构的特定conf文件,您将拥有所需的内容。
根据Laravel指南,当env()位于config文件夹之外时,切勿直接在代码中使用env()。使用config()是一个好习惯。在配置文件中,使用env()从.env文件获取数据。