使用env('APP_ENV')
,config('app.env')
或App::environment()
获取应用环境有什么区别?
我知道env('APP_ENV')
将$_ENV
,config('app.env')
读取配置,App::environment()
是所有内容的抽象。在我看来,优势甚至是这个。的抽象
我不知道是否存在其他差异,例如表现水平或安全性
答案 0 :(得分:13)
我感觉到了。当您缓存配置文件时,env()将(有时?)无法正常工作。所以我发现了:
从这里: https://laracasts.com/discuss/channels/general-discussion/env-not-reading-variables-sometimes
<强>更新强>
env()调用工作,只要你不使用php artisan config:cache。所以它非常危险,因为它通常会在开发时生效,但在生产时会失败。请参阅升级指南:https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0
更新Laravel 5.6:
Laravel现在建议在其documentation中使用
$environment = App::environment();
和describes env()只是从配置文件中的.env中检索值。但这仅适用于配置(&#39; app.env&#39;),并不适用于其他变量,例如配置(&#39; app.debug&#39;)。
答案 1 :(得分:1)
要考虑的一件事可能是将字符串传递给foreach($data as $index => $d){
$flight = Flight::create($d);
$flight->crews()->attach($request->input('flight_crew_list[' . $index . ']'));
}
以便验证当前环境的便利因素。
app()->environment()
答案 2 :(得分:0)
你有两个同样好的选择
let path = UIBezierPath(points: points)
let shapeLayer = CAShapeLayer(path: path, lineColor: UIColor.blue, fillColor: UIColor.lightGray)
view.layer.addSublayer(shapeLayer)
或
if (\App::environment('production')) {...}
app() - &gt;环境()实际上由Bugsnag使用,请查看文档here,它说
默认情况下,我们会通过调用Laravel应用程序实例上的environment()函数自动检测应用程序环境。
答案 3 :(得分:0)
如果在部署期间使用config:cache
命令,则必须确保只从配置文件中调用env
函数,而不是从应用程序中的任何其他位置调用。{/ p>
如果您在应用程序中调用env,强烈建议您为配置文件添加正确的配置值,并从该位置调用env,允许您将env
调用转换为config调用。 / p>
在app.php
配置文件中添加一个env配置选项,如下所示:
'env' => env('APP_ENV', 'production'),
答案 4 :(得分:0)
在12factor methodology中,应用程序包含两种类型的配置值:
./config/
文件夹中。在这种类型中,我们通常会存储一些在应用中使用的技术最佳/良好值,用户不应随时间更改这些值(例如,最佳图像压缩级别,连接超时,会话到期时间等。.env
文件中(但不应存储在git repo中,但是带有详细信息的示例值的.env.example
可以存储在repo中)。在这种类型中,我们通常存储一些重要/受保护的值,这些值取决于本地环境,例如密码,调试模式,数据库地址等。Laravel为此提供了便捷的方法
config(...)
帮助程序(因此,在此级别上,程序员无需知道哪个配置值是内部的,哪个是外部的)env(...)
帮助程序来设置外部配置值,例如在config / app.php 'debug' => env('APP_DEBUG', false)