[ Lumen 5.2 文档 ] 起步 —— 配置

1、简介

Lumen框架的所有配置项都放在配置文件.env  中。

2、访问配置值

你可以使用全局的辅助函数config来访问配置值,配置值可以通过”.”来分隔配置文件和配置项,如果配置项不存在的话则会返回默认值:

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

如果要在运行时设置配置值,传递一个数组到config函数:

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

3、环境配置

基于应用运行环境拥有不同配置值能够给我们开发带来极大的方便,比如,我们想在本地和线上环境配置不同的缓存驱动,在Lumen中这很容易实现。

Lumen使用了Vance Lucas开发的PHP库DotEnv来实现这一目的,在新安装的Lumen中,根目录下有一个.env.example文件,如果Lumen是通过Composer安装的,那么该文件已经被重命名为.env,否则的话你要自己手动重命名该文件。

在每次应用接受请求时,.env中列出的所有变量都会被载入到PHP超全局变量$_ENV中,然后你就可以在应用中通过辅助函数env来获取这些变量值:

$debug = env('APP_DEBUG', true);

第二个传递给env函数的值是默认值,如果给定key对应的环境变量不存在则使用该默认值。

不要把.env文件提交到源码控制(svn或git等)中,因为每个使用你的应用的不同开发者或服务器可能要求不同的环境配置。

如果你是在一个团队中进行开发,你可能需要将.env.example文件随你的应用一起提交到源码控制中,通过将一些配置值以占位符的方式放置在.env.example文件中,其他开发者可以很清楚明了的知道运行你的应用需要配置哪些环境变量。

判断当前应用环境

当前应用环境通过.env文件中的配置项来 APP_ENV决定,可以通过App实例上的environment方法来访问该配置值:

$environment = app()->environment();

你也可以向environment方法中传递参数来判断当前环境是否匹配给定值,如果需要的话你甚至可以传递多个值,如果匹配的话会返回true

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

学院君 has written 614 articles

资深PHP工程师,Laravel学院院长

11 thoughts on “[ Lumen 5.2 文档 ] 起步 —— 配置

  1. sunshine says:

    能不能像laravel那样把config文件夹复制到根目录 直接调用config里面的
    如果很多配置的话 每个都在bootstrap/app.php 里面设置的话 感觉很麻烦
    有没有什么简单的方法

        1. 懒人 says:

          解决方法
          //在 根目录 创建 config/statuses.php 文件
          //在 bootstrap/app.php 中 加载文件,即可以使用了
          $app->configure(‘statuses’);

          //使用
          $statuses= config(‘statuses’);
          print_r($statuses);

发表评论

标记为*的字段是必填项(邮箱地址不会被公开)

你可以使用这些HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>