Laravel 是否缓存配置?

Fre*_*man 5 php config laravel

说,我config('app.configKey')第一次得到配置。Laravel 加载文件应用程序并获取所需的密钥。如果我下次调用它,laravel 会再次加载文件吗?或者它存储价值?

我想知道我是否应该写:

$value = config('app.key');
/* Some code here ... */
$anotherVar = $value;
Run Code Online (Sandbox Code Playgroud)

或者:

$value = config('app.key');
/* Some code here ... */
$anotherVar = config('app.key');
Run Code Online (Sandbox Code Playgroud)

这只是一个例子。在实际代码中,我在一类中获得了配置。后来我在另一个班级中再次获得了这个配置。

tom*_*mmy 6

在启动时,Laravel 会读取您所有的配置文件并将它们的值保存在 Application 实例中。所以调用config('app.configKey')不会加载config/app.php文件,即使是第一次调用它。

在您的场景中,这实际上取决于背后的代码是/* Some code here ... */做什么的。

想象一下调用一些方法,例如$this->changeConfigValue(),更改 的配置值app.configKey。它实际上所做的是更改 Application 实例中的值,它不会覆盖您的配置文件。

在您的第一个代码示例中,$anotherVar将始终等于$value. 但在第二个代码示例中,for 的值$anotherVar将再次从 App 实例中读取,并且等于$this->changeConfigValue()将值设置为的任何值。

这不是缓存。

Laravel 提供了一种缓存配置的方法。您可以使用 artisan 命令手动执行此操作:

php artisan config:cache

这将创建一个文件bootstrap/cache/config.php,将您的所有配置保存在一个文件中。启动时,读取一个文件而不是整个配置目录会更快(这就是缓存的用途:P)。

http://laravel.com/docs/5.1/installation#configuration-caching