照猫画虎 实现 min-laravel 框架系列之 env 配置文件加载

php   laravel  

env 配置文件加载

laravel 系统的配置文件部分也是使用 symfony 提供的 Dotenv 组件,该组件会加载配置( .env )文件,并将文件中的变量加载到 getenv(), $_ENV and $_SERVER

加入依赖

  • 在 minlaravelframework/framework 的 composer.json 配置文件中添加依赖包
  1. "require": {
  2. ....
  3. "symfony/dotenv": "^5.0",
  4. "vlucas/phpdotenv": "^4.0", // 将配置文件加载到环境变量中的一个包
  5. },
  • 在 minlaravel 目录下更新, composer update

LoadEnvironmentVariables

通过上一篇的研究,http kernel 的 boostrap 会调用对应类的 bootstrap 函数

bootstrap 方法

  1. public function bootstrap( Application $app )
  2. {
  3. // 处理文件缓存问题
  4. if ($app->configurationIsCached()) {
  5. return;
  6. }
  7. $this->checkForSpecificEnvironmentFile($app);
  8. try {
  9. $this->createDotenv($app)->safeLoad();
  10. } catch (InvalidFileException $e) {
  11. $this->writeErrorAndDie($e);
  12. }
  13. }

createDotenv 方法

这个就是加载配置文件的核心方法

  1. protected function createDotenv($app)
  2. {
  3. return Dotenv::create(
  4. Env::getRepository(),
  5. $app->environmentPath(),
  6. $app->environmentFile()
  7. );
  8. }

配置文件获取

通过 getenv 获取

  1. getenv('APP_NAME')

通过 $_ENV 获取

  1. $_ENV['APP_NAME'];

通过 $_SERVER 获取

  1. $_SERVER['APP_NAME'];

通过 laravel 提供的函数获取

  1. function env($key, $default = null)
  2. {
  3. return Illuminate\Support\Env::get($key, $default);
  4. }


评论 0

发表评论

Top