在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中做到这一点呢?
3条答案
按热度按时间5vf7fwbs1#
如果你需要在值上创建一个数组,你可以在字符串格式上创建,当你需要的时候,你可以解析它们
字符串
当你需要他们
型
或者保存JSON格式的值,然后使用
json_decode()
获取型
额外信息:
在Laravel 5上,您需要将所有的. env文件转换为.env文件。
在每个环境中,您的
.env
文件将与此环境的值不同。要设置您的环境,您需要在
.env
文件中更改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现在使用了万斯卢卡斯的DotEnv,而不是各种令人困惑的嵌套环境配置目录。这个库提供了一个超级简单的方法来管理您的环境配置,并使Laravel 5中的环境检测变得轻而易举。有关详细信息,请查看完整的配置文档。
您可以在此处找到默认的
.env
文件:https://github.com/laravel/laravel/blob/master/.env.example根据应用程序运行的环境使用不同的配置值通常很有帮助。例如,您可能希望在本地使用与生产服务器上不同的缓存驱动程序。使用基于环境的配置很容易。
Laravel使用了万斯卢卡斯的DotEnv PHP库。在一个新的Laravel安装中,你的应用程序的根目录将包含一个.env.example文件。如果你通过Composer安装Laravel,这个文件将自动重命名为. env。否则,你应该手动重命名文件。
tpgth1q72#
Phpdotenv通用
Phpdotenv是关于在环境中存储值,而不是通用配置库。环境是UNIX概念,值总是被解释为字符串。转换为不同的数据类型,如数组或布尔值,即使方便也超出了这个类的范围。
Laravel配置系统
Laravel的配置系统已经分离了。phpdotenv做环境,laravel做配置。然后一旦配置完成,环境就被忽略了。将环境变量从字符串解析成传递给laravel的任何内容(无论是它们的env函数,还是在配置文件中爆炸)。
良好实践
换句话说,使用Config::get()来获得具有所需结构的特定conf文件,这样就可以获得所需的内容。
根据Laravel的指导方针,当它在config文件夹之外时,你不应该在代码中直接使用env()。使用config()是一个很好的做法。在配置文件中使用env()从.env文件中获取数据。
tcomlyy63#
字符串
这将修剪,也防止在结果数组中有空项目时,env是空字符串或有额外的逗号。