laravel的vlucas/phpdotenv源码解读

爱游资源站_免费游戏源码资源站www.vipyouxi.net

现在我们末尾一一解读phpdotenv中的源码

起首在 bootstarp/app.php爱游资源站_免费游戏源码资源站www.vipyouxi.netp中(new Dotenv\Dotenv(DIR ))->load()

我们先来解读这一行代码的履行流程

起首是实例化了Dotenv这个类和传入以后项目门路掉掉落一个Dotenv类的实例,实例中的file拼接掉掉落一个.env的文件地址赋值给这个实例中的filePath

第二行就是去new 一个Loader类.这个类也就是跟Dotenv类统一个目次下的,这个类主要完成了读取文件中的内容到php的_SERVER全局变量中.

这是Loader类的结构方法,该结构方法中第二个参数主要控制不成变的变量,

接上去就是调用Dotenv中的load方法了.

load方法中继续调用了loaData()方法

在loadData方法中又获得了一下Load类的实咧,然后经过掉掉落的load实例再去调用了Load类中的load方法.

这个方法中主要完成了全部文件的一个过滤读取 然后存入php全局变量中

现在就来一一解读下这个方法中的完成

第一行调用的ensureFileIsReadable该方法就是检查$this->filePath可否是一个文件和可否可读.然后调用了readLinesFromFile方法

这个方法就是经过file函数读取文件中的内容,并以数组方法前去.

接上去就是遍历这个数组,最后前去.

在遍历数组傍边还做了很多的一些操作,起首就是过滤.env文件中的注释行 和不是以一种键值对的方法的数据.

最后履行setEnvironmentVariable这个方法.经过方法名能了解就是把.env中可用的设备存入到情况变量傍边,我们现在来看看这个方法又做了哪些操作呢

normaliseEnvironmentVariable 方法参数$name是一个字符串

这个方法的第一个步是经过传入的字符串截取成一个数组前去辨别赋值给list中的两个变量

这个sanitiseVariableValue方法看着就是去除一些字符串中的特别符号甚么已到达防止一些恶意的进击.

改方法主要就是解析出嵌套的变量.然后回到setEnvironmentVariable方法

紧接着 当假设immutable这个变量为true时 就要去检查以后php情况中的_SERVER getenv() 全局变量中跟php的情况变量中可否曾经有这个$name值了.假设有的话就前去不往下履行了.

在接上去 方法中就是辨别项目可否在apache情况下,现在基本都是应用nginx WEB效劳器,所以这里就不做说清晰明了.

最后几行就是把.env文件中的键值对 辨别存入env _SERVER傍边.

0

评论0

请先

没有账号? 忘记密码?

社交账号快速登录

'); })();