Lumen默认是通过.env
文件来进行框架配置
框架运行后配置会被加载到 php 全局变量 $_ENV
中,同时也可以通过全局helper函数:
$value = config('key');
来获取配置信息
注意在使用版本控制git
,svn
等时候不需要把.env
加入版本控制
而是通过 .env.example
进行配置文件同步,每一次增加和删除配置项后。注意同步修改.env.example
并提交版本控制
简单来说,每一个环境都会有自己的.env
文件,通过复制.env.example
来创建,并修改为当前环境下的变量值。而.env.example
只有一份, 并跟随代码。
自定义config配置
使用过Laravel的可能知道,在项目根目录下有个config文件。
其实Lumen也是有的,只是被默认隐藏起来了。
进入vendor\laravel\lumen-framework
目录,有个config
文件夹。手动复制config
目录至项目根目录下即可:
/your_project_path
|- app
|- bootstrap
|- config
...
|- vendor
...
config配置文件加载
修改 bootstrap/app.php
# 通过 $app->configure() 加载所需的配置文件
$app->configure('config_file_name');
# 实例
/*
|--------------------------------------------------------------------------
| Register Middleware
|--------------------------------------------------------------------------
|
| Next, we will register the middleware with the application. These can
| be global middleware that run before and after each request into a
| route or middleware that'll be assigned to some specific routes.
|
*/
// $app->middleware([
// App\Http\Middleware\ExampleMiddleware::class
// ]);
// $app->routeMiddleware([
// 'auth' => App\Http\Middleware\Authenticate::class,
// ]);
/*
| 加载自定义配置文件
|
*/
$app->configure('app');
$app->configure('auth');
env 与 config 的关系
env 主要是为了解决同一个变量在不同的环境下有不同的值
比如mysql数据连接:
开发(develop)跟线上生产(product)环境会有不同的ip地址,端口和用户名,密码。通过env只需要修改当前环境下自身的值,也不会容易造成各环境下配置被覆盖。
而config下的配置文件,可以用来记录所有环境下相同的配置值
同时config可以用来对env的配置做很好的归类以及构造合适的数据格式
env只能是单一的key-value
通过 env 配合 config 可以组合多类型的配置数据格式