首页 » Laravel 5.3 中文文档 » 正文

「Laravel 5.3 中文文档」开始 – 配置

介绍

Laravel 框架所有的配置文件都存放在 config 目录下。每一个配置项都有完整的注释,所以你可以浏览这些文件去熟悉你可能用到的配置项。

获取配置值

你可以通过全局辅助函数 config 在应用的任意位置访问这些配置值。这些配置值通过使用“点”语法来获取,其中包含了文件以及你需要获取的选项的名称。当配置项不存在的话,你还可以指定默认值:

$value = config('app.timezone');

想要在运行时设置配置值,可以给 config 辅助函数传递一个数组:

config(['app.timezone' => 'America/Chicago']);

环境变量配置

根据程序运行时的环境来提供不同的配置值是非常有用的。例如,你想在开发环境和生产环境使用不同的缓存驱动。

Laravel 使用 Vance Lucas 开发的 DotEnv PHP 库来实现这一机制。在全新安装的 Laravel 应用中,根目录下会有一个 .env.example 文件。如果你是通过 Composer 安装的 Laravel ,这个文件会被自动重命名为 .env,否则,你需要手动重命名这个文件。

获取环境变量配置

当你的应用接受的请求时,所有列在这个文件中的变量都会被加载到 $_ENV 超级全局变量中。然而,你还可以通过 env 辅助函数来获取你配置文件中的这些值。事实上,你查看 Laravel 配置文件的时候,你可能注意到了有些配置项已经使用了这个辅助函数:

'debug' => env('APP_DEBUG', false),

传递给 env 函数的第二个参数为默认值,如果给定 key 的环境变量不存在,将会返回该默认值。

你的 .env 文件不应提交到版本控制系统,因为你应用的每一个开发者 / 运行环境可能需要不同的环境配置。

如果你在团队中开发的话,你可能希望应用中包含 .env.example 文件。通过在 example 文件中给定预设的环境配置,团队中的其他开发者可以清晰地看到应用程序运行需要的全部环境变量。

查看当前的环境

当前应用的环境是通过 .env 文件中的 APP_ENV 来确定的。你可以通过 App Facadeenvironment 方法来获取该值:

$environment = App::environment();

你也可以给 environment 传递参数来检查当前环境是否与给定的相同。如果当前环境与给定的其中任何一个相符的话,将会返回 true。

if (App::environment('local')) {
    // 当前环境为 local
}

if (App::environment('local', 'staging')) {
    // 当前环境为 local 或 staging...
}

通过 app 辅助方法也可以获取当前应用的实例。

配置缓存

如果要提升你应用的速度,可以通过 config:cache Artisan 命令把配置缓存到一个文件中。这会把应用中所有的配置项结合到一个单独的文件中,以使框架可以更快的加载它。

作为你生产环境部署的一部分,你通常也需要运行 php artisan config:cache 命令。但是在本地开发环境中,请不要运行该命令,因为在你应用开发的过程中,配置项可能会经常的变动。

维护模式

当你的应用处于维护模式时,所有的请求都会返回一个通用的视图。在你更新应用或进行性能维护时,这么做可以很轻松的「关闭」整个应用程序。维护模式的检查会包含在应用程序默认的中间件栈中。当你的应用处于维护模式时,会抛出一个 503 状态码的 MaintenanceModeException 异常。

要启用维护模式,只需运行 down Artisan 命令:

php artisan down

你也可以为 down 命令提供 messageretry 选项。message 的值会作为展示或记录的信息,而 retry 的值将会作为 Retry-After HTTP 头的值。

php artisan down --message='Upgrading Database' --retry=60

要禁用维护模式,使用 up 命令:

php artisan up

维护模式响应模板

默认的维护模式模板位于 resources/views/errors/503.blade.php 。你可以根据应用的需要自由的更改该模板。

维护模式 & 队列

当你的应用处于维护模式时,所有的队列任务都不会被执行。当退出维护模式后,这些任务则会继续正常执行。

维护模式的替代方案

由于维护模式需要执行几秒钟的时间,所以你可以使用 Envoyer 作为替代方案,实现 0 秒下线 Laravel 应用。


该篇属于专题:《Laravel 5.3 中文文档

发表评论