Thinkphp5.1自动加载机制

时间:2022-05-07 21:05:56

Thinkphp5.1自动加载机制

自动加载机制

  1. 注册自动加载

    1. 引入静态自动加载映射文件,autoload_static.php
      1. 根据首字母前缀将不同的加载类归类-$prefixLengthsPsr4
      2. 将命令空间映射到指定文件目录下-$prefixDirsPsr4
      3. compose下载的包文件,需要加载的文件-$files
      4. 类映射关系-$classMap
    2. 检测是否有composer自动加载的支持
    3. 注册think、traints命名空间定义
    4. 查看runtime目录下是否有类映射文件存在,加载类库映射文件
    5. 自动加载extend目录
  1. 注册错误和异常机制

    1. Log
    2. Error
    3. Exception
    4. Handle
  1. 注册类库别名

    1. app
    2. Config
    3. ......
  2. 自动加载文件机制

    1. PSR4-获取文件顶部命名空间首字母,根据首字段查找到首字母相同部分的映射类
    2. PSR4-根据查找到对应字母相同的部分映射类文件,再取得*命名空间与类通过字符串查找匹配*命名空间是否相对应
    3. PSR4-匹配中,则取文件基目录(application目录)拼接去掉*命令中间,含有子级命名空间的文件类名(包括文件后缀),判断是否为文件,是,则返回,include该文件
    4. 若不是文件,则去查看扩展目录(extend目录)该文件是否存在,是,则返回,include该文件
    5. PSR4-的application&extend均匹配不中,则去PSR0匹配,同样也是先去application查找是否存在,再去extend查找
    6. 若不存在则该文件映射置为false