为什么"强烈建议"在缓存配置文件时不使用env()帮助程序?

les*_*gar 5 config laravel

Laravel 升级文档从5.2到5.3指定以下内容:

缓存和环境

如果config:cache在部署期间使用该命令,则必须确保仅从env配置文件中调用该函数,而不是从应用程序中的任何其他位置调用该函数.

如果您env在应用程序中进行呼叫,强烈建议您为配置文件添加正确的配置值,并env从该位置进行呼叫,允许您将env呼叫转换为配置呼叫.

文档没有回答的问题是:为什么?

在应用程序中env()使用时,帮助程序是否仍然可以正常工作?env()在缓存配置后,我是否仍然可以使用,而不是被强制在我的整个项目中找到它并用config()帮助器替换它,因为文档(间接)建议?

例如,如果我在app.php中有这个:

'env' => env('APP_ENV', 'production')
Run Code Online (Sandbox Code Playgroud)

它会被缓存config:cache,但我仍然env()在代码中的某个地方使用帮助器,那么有什么理由env('APP_ENV')可以给我一些别的东西而不是config('app.env')

那个App::environment()电话怎么样- config:cache在生产中使用后也不推荐使用它?

pol*_*ixd 0

因为,所有配置文件都缓存在bootstrap/cache/. 使用config(),不使用env()。在配置文件中,config/app.php您必须使用env().

例子:

env('app.name') -> config('app.name')
Run Code Online (Sandbox Code Playgroud)