照猫画虎 实现 min-laravel 框架系列之 env 配置文件加载
- laravel
- 2020-06-11
- 277
- 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);}