加载时机

Kernel sendRequestThroughRouter方法的bootstrap。具体调用过程LoadEnvironmentVariables->bootstrap()

流程中的工具

Dotenv类整体负责整个流程
DotenvFactory类负责创建和管理DotenvVariables
DotenvVariables类负责管理adapter的数据设置和获取
Adapter类管理一类环境变量($_ENV, $SERVER, putenv)
Loader类逻辑类

具体流程

创建Dotenv类,传入环境变量的路径s和要用的adapter
Dotenv创建loader,准备工作包括: 创建Factory实例,拼接env文件路径
Dotenv的loaddata方法开始调用loader的load的方法真正开始获取配置

解析字符串

读取文件内容后,使用Lines::process解析每一行的内容。
逐行读取,如果包含该双引号,判断是否是多行模式,最终返回数组(包含每行,或者多行模式的内容)

返回内容给loader的processEntries方法。循环处理每一个条目,主要是使用=号分割,判断name的有效性,滤出value里面的注释(其他内容)。检测值里面的嵌套变量,通过envVariables设置set。