照猫画虎 实现 min-laravel 框架系列之 env 配置文件加载
- laravel
- 2020-06-11
- 3587
- 0
env 配置文件加载
laravel 系统的配置文件部分也是使用 symfony 提供的 Dotenv 组件,该组件会加载配置( .env )文件,并将文件中的变量加载到 getenv()
, $_ENV
and $_SERVER
加入依赖
- 在 minlaravelframework/framework 的 composer.json 配置文件中添加依赖包
"require": {
....
"symfony/dotenv": "^5.0",
"vlucas/phpdotenv": "^4.0", // 将配置文件加载到环境变量中的一个包
},
- 在 minlaravel 目录下更新, composer update
LoadEnvironmentVariables
通过上一篇的研究,http kernel 的 boostrap 会调用对应类的 bootstrap 函数
bootstrap 方法
public function bootstrap( Application $app )
{
// 处理文件缓存问题
if ($app->configurationIsCached()) {
return;
}
$this->checkForSpecificEnvironmentFile($app);
try {
$this->createDotenv($app)->safeLoad();
} catch (InvalidFileException $e) {
$this->writeErrorAndDie($e);
}
}
createDotenv 方法
这个就是加载配置文件的核心方法
protected function createDotenv($app)
{
return Dotenv::create(
Env::getRepository(),
$app->environmentPath(),
$app->environmentFile()
);
}
配置文件获取
通过 getenv 获取
getenv('APP_NAME')
通过 $_ENV 获取
$_ENV['APP_NAME'];
通过 $_SERVER 获取
$_SERVER['APP_NAME'];
通过 laravel 提供的函数获取
function env($key, $default = null)
{
return Illuminate\Support\Env::get($key, $default);
}