Mig*_*ges 13 environment-variables laravel laravel-5 phpdotenv
是用什么区别env('APP_ENV'),config('app.env')或者App::environment()导致某些应用环境?
我知道env('APP_ENV')意志$_ENV,config('app.env')读取配置,App::environment()是所有的抽象.在我看来,优势甚至是这个.抽象.
我不知道是否存在其他差异,例如性能水平或安全性
ndb*_*erg 23
我只是觉得它.当您缓存配置文件时,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现在建议在其文档中使用
MY_VALUE=foo
Run Code Online (Sandbox Code Playgroud)
并描述了env()只是从配置文件中的.env中检索值.但这仅适用于config('app.env'),不适用于其他变量,如config('app.debug').
Yev*_*yev 10
你有两个同样好的选择
if (\App::environment('production')) {...}
Run Code Online (Sandbox Code Playgroud)
或者
if (app()->environment('production')) {...}
Run Code Online (Sandbox Code Playgroud)
app()->environment() 实际上由Bugsnag 使用,查看文档here它说
默认情况下,我们会通过在 Laravel 的应用程序实例上调用 environment() 函数来自动检测应用程序环境。
现在,差异:
1)env(...)缓存配置后函数返回null。它在生产中经常发生。
2)您可以config在单元测试中更改参数,它在测试时为您提供了灵活性。
app()->environment()需要考虑的一件事可能是传递字符串以验证当前环境的便利因素。
// or App:: whichever you prefer.
if (app()->environment('local', 'staging')) {
logger("We are not live yet!");
Seeder::seedThemAll();
} else {
logger("We are LIVE!");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20081 次 |
| 最近记录: |