Tp5自动加载Loader类学习

时间:2024-03-23 22:18:09

Tp5自动加载Loader类学习


spl_autoload_register

自动用给定的函数尝试加载未定义的类

参数:

  1. 自动加载的函数
  2. 是否抛出异常
  3. true为添加至队首,false为添加至队尾

Loader的Register方法

注册系统自动加载

Tp5自动加载Loader类学习

composer自动加载

Tp5自动加载Loader类学习

调用了composer文件夹下的autoload_static.php文件

$prefixLengthPsr4——自动加载的类的命名空间的名称的长度

键为这个类的命名空间的首字母,值为这个类的命名空间的名称的长度

$prefixDirPsr4——自动加载的类的命名空间的对应路径

类的命名空间=>类的相对路径

Tp5自动加载Loader类学习

注册命名空间

Loader会注册think类的命名空间和trait类的命名空间

Tp5自动加载Loader类学习

addNamespace会调用addPsr4,添加psr4空间,此时在$prefixLengthPsr4和$prefixDirPsr4会增加这两个值

加载类库映射文件

Tp5自动加载Loader类学习

addClassMap方法

Tp5自动加载Loader类学习

自动加载extend目录

Tp5自动加载Loader类学习


注册类库别名

Tp5自动加载Loader类学习

类的自动加载

Tp5自动加载Loader类学习

autoload方法调用findFile方法

Tp5自动加载Loader类学习

findFIle方法会先寻找是否存在缓存classmap.php(里面存放了类对应的路径),若有直接返回文件路径

没有则会获取之前$prefixDirPsr4中的所在文件夹路径然后通过$prefixPathPsr4获得类的文件名,然后组装出完整的文件路径并返回。