Laravel加载env源码解析
加载时机
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。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。