Thinkphp5源码分析第三章(紧接第二章,分析其中的autoload方法体内的findFile方法函数 ,addPsr4(),registerComposerLoader())

 

findFile函数这里接着讲起,首先像上图我标识的A处这样输出我们的这个属性值,他此类下定义的一个数组,这里此时里面已经存放了TP5框架中的所有类库文件名称,像这样的 

(think\Route),这个类库包括composer文件夹,也即是根目录下的vendor目录里面的类库。

接着我们注意这里的C处跟D处正好通过一种取巧的方式,他们正好完全一模一样。之所以通过这样的foreach循环方式,是因为这样获取到的$prefix(文件前缀 这里时foreach里面的key--键 与数组$class比对更加简便明了)

B:这个strpos()是获取函数$class首次出现的位置,前面三个等号很关键,因为这个函数手册中规定如下图所示

这里的$prefixDirsPsr4变量是在下面的addPsr4()函数和addPsr0函数处赋予了值,且强制定义为了数组类型,就是像这样的写法(array)$path。因为手册中有提到他遵循psr-0,psr-4规范所以整个Loader类中才会写入两个不同的添加psr空间方法。当我们想要使用自动加载类的时候就必须遵循此规范,此规范会定义namespace等一些要求。这里给出一篇一位老哥写的psr0和psr4的规范理解(点击后面的链接两字)链接

这里我们就先说说它实现addPsr4方法,只是规范不同,如下图:

A:注意看这个方框的整体,它是三目运算法。

B:array_merge()合并一个或多个数组。

C:强制定义为数组类型。

D:strlen()获取字符串长度,string为空时返回0,且空格也要算做一个字符。

E:这里是异常抛出,当参数不是预期的类型时,Logexception 和exception。php7不同。

A:注意这里的还是有一个转移符号的意思。 

最后整个Loader.php我再分析下注册composer自动载入,下图是注册composer自动载入

首先确定这个文件的存在接着我们,此时之前在base.php定义的常量就起了很大作用了,否则这里要写好长一段,所以灵活性也可以说体现在这里。

A:变量发挥了作用了

B:注册加载composer里面的东西,从而定义了顶级命令空间  这也是psr-0里面一个规范

那么今天就先到这了,各位晚安啦。

最后送大家一句话吧:人生,其实就是俗世风尘中的沧海桑田,一些关心的话,关心的话语,关心的汇总。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值