编程教育资源分享平台

网站首页 > 后端开发 正文

laravel框架的环境检测与配置加载

luoriw 2024-02-01 14:21:21 后端开发 10 ℃ 0 评论

环境检测阶段是对程序运行的环境进行总体配置,这部分内容实际上和配置加载的功能是相同的,都是配置应用程序的运行环境,包括系统配置、身份认证配置、缓存配置、数据库配置、文件系统配置和sessions配置等。这些配置都是以文件形式提供的,其中环境检测文件是Laravel框架根目录下的.evn文件,而配置加载的配置文件是laravel\config\目录下的所有文件,两者的关系可以看做是主从的关系,即在配置加载过程中设置的参数都可以在.evn文件中进行设置,而.evn中对环境的配置将会覆盖配置加载项,当然也可以修改成不覆盖。说简单点,就是将一些重要的配置参数从laravel\config\目录下的文件中提取到.evn文件中,这样易于随时修改。首先给出环境检测加载的源码:文件Illuminate\Foundation\Bootstrap\DetectEnvironment.php

文件laravel\vendor\vlucas\phpdotenv\src\Dotenv.php

DetectEnvironment类的bootstrap()函数通过Dotenv::load()静态函数实现.env文件的配置加载,在.env文件中配置项以“配置项=参数值”的形式给出,最后通过静态函数setEnvironmentVariable()给配置项“putenv("$name=$value");”设置环境变量,并在$_ENV和$_SERVER全局数组中记录。对于配置加载,是通过LoadConfiguration类的bootstrap()函数实现的。部分源代码如下:文件Illuminate\Foundation\Bootstrap\LoadConfiguration.php

首先会查找是否有缓存的配置文件,如果有将先加载,这样加载配置项速度快,否则将文件顺序加载。对于程序配置项,将会存放到一个仓库类(Repository类)实例中,而该类的实例被添加进服务容器的共享实例数组中,服务名称为“config”,以后就可以用该名称通过服务容器自动获得需要的配置参数。在完成仓库类的实例化和服务绑定后,将通过loadConfigurationFiles()函数进行配置项的加载。接下来介绍加载的实现过程。文件Illuminate\Foundation\Bootstrap\LoadConfiguration.php

文件Illuminate\Config\Repository.php

对于配置项的加载,首先需要获取配置文件,通过getConfigurationFiles()将Laravel框架下的配置文件全部读取出来并存储到$files数组中返回,该过程是通过服务容器获取配置文件的路径(代码“$app->configPath()”),然后通过Symfony组件中的探测类(Symfony\Component\Finder\Finder类)实现文件的识别,最后提取出文件名和文件路径并以关联数组的形式(如“app”=>“D:\WWW\laravel\config\app.php”)存储到$files数组中返回。对于配置文件,每个文件返回一个数组,这里通过“require'文件路径'”的形式获取配置项数组,最后通过仓库实例的set()函数添加到仓库中。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表
最新留言