说,我第一次得到config('app.configKey')
的配置。 Laravel加载文件应用程序并获取所需的密钥。如果我下次再调用它,laravel会再次加载文件吗?或者它存储值?
我想知道我是否应该写:
$value = config('app.key');
/* Some code here ... */
$anotherVar = $value;
或:
$value = config('app.key');
/* Some code here ... */
$anotherVar = config('app.key');
这只是一个例子。在实际代码中,我在一个类中获得配置。后来我又在另一堂课中得到了这个配置。
答案 0 :(得分:4)
在启动时,Laravel会读取所有配置文件并在Application实例中保存它们的值。因此,即使第一次调用config('app.configKey')
,调用config/app.php
也不会加载/* Some code here ... */
文件。
在您的方案中,它实际上取决于$this->changeConfigValue()
背后的代码。
想象一下调用某种方法,例如app.configKey
,用于更改$anotherVar
的配置值。它实际上做的是它改变了Application实例中的值,它不会覆盖你的配置文件。
在您的第一个代码示例中,$value
始终等于$anotherVar
。
但是在第二个代码示例中,$this->changeConfigValue()
的值将再次从App实例中读取,并且等于php artisan config:cache
设置值的任何值。
这不是缓存。
Laravel提供了一种缓存配置的方法。您可以使用工匠命令手动执行此操作:
bootstrap/cache/config.php
这将创建文件{{1}},它将您的所有配置保存在一个文件中。 在启动时,只读取一个文件而不是整个配置目录更快(这就是缓存的用途:P)。
http://laravel.com/docs/5.1/installation#configuration-caching