Lumen框架的所有配置项都放在配置文件.env
中。
你可以使用全局的辅助函数config
来访问配置值,配置值可以通过”.”来分隔配置文件和配置项,如果配置项不存在的话则会返回默认值:
$value = config('app.timezone');
如果要在运行时设置配置值,传递一个数组到config
函数:
config(['app.timezone' => 'America/Chicago']);
基于应用运行环境拥有不同配置值能够给我们开发带来极大的方便,比如,我们想在本地和线上环境配置不同的缓存驱动,在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... }