Tp5自动加载Loader类学习
spl_autoload_register
自动用给定的函数尝试加载未定义的类
参数:
- 自动加载的函数
- 是否抛出异常
- true为添加至队首,false为添加至队尾
Loader的Register方法
注册系统自动加载
composer自动加载
调用了composer文件夹下的autoload_static.php文件
$prefixLengthPsr4——自动加载的类的命名空间的名称的长度
键为这个类的命名空间的首字母,值为这个类的命名空间的名称的长度
$prefixDirPsr4——自动加载的类的命名空间的对应路径
类的命名空间=>类的相对路径
注册命名空间
Loader会注册think类的命名空间和trait类的命名空间
addNamespace会调用addPsr4,添加psr4空间,此时在$prefixLengthPsr4和$prefixDirPsr4会增加这两个值
加载类库映射文件
addClassMap方法
自动加载extend目录
注册类库别名
类的自动加载
autoload方法调用findFile方法
findFIle方法会先寻找是否存在缓存classmap.php(里面存放了类对应的路径),若有直接返回文件路径
没有则会获取之前$prefixDirPsr4中的所在文件夹路径然后通过$prefixPathPsr4获得类的文件名,然后组装出完整的文件路径并返回。