跟我学Laravel之配置Laravel

时间:2022-01-20 13:49:13

当你需要在运行时访问配置项时,可以使用Config类:

获取一个配置项的值**

 

复制代码 代码如下:

Config::get('app.timezone');

 

如果配置项不存在,你还可以指定返回的默认值:

 

复制代码 代码如下:

$timezone = Config::get('app.timezone', 'UTC');

 

为配置项赋值

注意"点"式语法可以用来访问不同文件里的配置项的值。你还可以在运行时为配置项赋值。:

 

复制代码 代码如下:

Config::set('database.default', 'sqlite');

 

在程序运行时设置的配置值只在本次请求中有效,不会对以后的请求造成影响。

环境配置

通常应用程序根据不同的运行环境确定不同的配置项的值是非常有用的。例如,你也许希望在开发机器与生产机器上使用不同的缓存驱动(cache driver)。根据环境来改变配置就能很容易的达到此目的。

在config目录下创建一个和你的环境名同名的目录,例如local。然后,创建配置文件,这些配置文件中包含你想覆盖的配置选项。例如,要在本地环境中覆盖缓存驱动(cache driver),你可以在app/config/local目录中创建cache.php文件并包含如下内容:

 

复制代码 代码如下:


<?php

 

return array(

    'driver' => 'file',

);

 

注意: 不要使用'testing'作为环境名,它是专门为单元测试所保留的。
注意,你不需要为基础配置文件中的所有配置项指定值,只需指定你需要覆盖的配置选项即可。环境配置文件将会以"cascade"方式覆盖基本配置文件。

接下来,我们需要指导框架如何确定其运行环境。默认环境总是produciton。然而,你可以在安装目录的根目录下的bootstrap/start.php 文件中设置其他的环境。在该文件中,你可以找到 $app->detectEnvironment方法的调用。传入的数组参数就是用来确定当前运行环境的。你可以根据需要添加其他的环境或机器名。

 

复制代码 代码如下:


<?php

 

$env = $app->detectEnvironment(array(

    'local' => array('your-machine-name'),

));

 

在此案例中,'local' 是运行环境的名称,'your-machine-name' 是服务器的主机名。在Linux和Mac上,可以通过 hostname 命令来确定所用机器的主机名。

如果你需要更灵活的环境检查方式,可以在调用detectEnvironment时传递一个闭包(Closure) , 这样你就可以按照自己的方式检查环境了:

 

复制代码 代码如下:

$env = $app->detectEnvironment(function()
{
    return $_SERVER['MY_LARAVEL_ENV'];
});

 

获取当前的应用环境

可以通用调用environment方法来获取当前的应用环境:

 

复制代码 代码如下:

$environment = App::environment();

 

你还可以将参数传递给 environment 方法来判断应用环境是否与某个给定值匹配:

 

复制代码 代码如下:


if (App::environment('local'))
{
    // The environment is local
}

 

if (App::environment('local', 'staging'))
{
    // The environment is either local OR staging...
}

 

维护模式

当应用处于维护模式时,所有的路由都会指向一个自定义的视图。这对于更新应用或执行维护任务时临时"禁用"当前应用是很方便的。App::down方法在app/start/global.php文件里进行了定义,它将在维护模式时将该方法输出的内容展示给用户。

要开启维护模式,只需执行Artisan 的 down命令:

 

复制代码 代码如下:

php artisan down

 

要关闭维护模式,只需执行 up 命令:

 

复制代码 代码如下:

php artisan up

 

当你的应用处于维护模式时,如需展示一个自定义的视图,只要在app/start/global.php文件中加入如下代码即可:

 

复制代码 代码如下:

App::down(function()
{
    return Response::view('maintenance', array(), 503);
});


如果传递给 down 方法的闭包返回值为 NULL, 在此次请求中将忽略维护模式。

 

维护模式 & 队列

当应用程序处于维护模式时, 将不接受新的队列任务 。一旦应用程序退出维护模式,队列任务的处理即恢复正常。