Laravel upgrade documentation从5.2到5.3指定以下内容:
缓存和环境
如果在部署期间使用
config:cache
命令,则必须 确保你只是在你的内部调用env
函数 配置文件,而不是应用程序中的任何其他位置。如果您在应用程序中呼叫
env
,那么就是强烈的 建议您为配置添加适当的配置值 文件并从该位置拨打env
,允许您进行转换 您的env
来电拨打电话。
文档没有回答的问题是:为什么?
在应用程序中使用时, 例如,如果我在 app.php : 它会被 env()
帮助程序是否仍然可以正常工作?在缓存配置后,我仍然不能使用env()
,而不是被强制在我的整个项目中找到它并用config()
帮助器替换它,因为(间接)由文档建议? / p>
'env' => env('APP_ENV', 'production')
config:cache
缓存,但我仍然在代码中的某处使用env()
帮助器,那么有任何理由env('APP_ENV')
会给我一些别的东西吗? config('app.env')
?App::environment()
调用 - 如果在生产中使用config:cache
后也不建议使用它?
答案 0 :(得分:3)
这是因为在Laravel中缓存如何工作,你有一个storage/cache
文件夹,当你使用命令php artisan config:cache
时,它存储了配置文件的“编译”版本,所以它更轻,更快。在该缓存过程中,Laravel读取.env
文件并使用env()
辅助函数替换所有值。
现在,要访问配置的编译版本(通常已经在内存中),您需要使用config()
帮助程序,否则您将访问文件,这是一种更慢的方法。
缓存配置后禁用env()
功能的原因是为了确保生产环境中的性能,因为假设是在进行编译的情况下。
总之,这是创作者的决定,你可能喜欢或不喜欢,IMO让事情变得更清晰,并迫使你拥有更优化和有组织的应用程序。
希望这会对你有所帮助。
答案 1 :(得分:0)
因为,所有配置文件都缓存在// Add 3 page views
pageView.addPage(view1)
pageView.addPage(view2)
pageView.addPage(view3)
// Show the 3rd page
pageView.currentPage = 2
中。使用bootstrap/cache/
,而不是config()
。在env()
之类的配置文件中,您必须使用config/app.php
。
示例:强>
env()