@animaflower 这两行中间只有一句话,应该就是为这句话服务的。
点进他注册的自动加载函数 loadClassLoader 中可以看到,如果访问特定的完全限定名,则返回 ClassLoader 这个类。
中间这句恰恰访问的就是这个, 这个过程下来的作用就是把 ClassLoader 对象赋值给了当前类的静态属性 loader,因为他注册的时候把加载函数置于了 spl autoload 的栈首,任何自动加载的文件都要先经过这个方法处理,可能为了性能考虑,在完成目的后就立刻注销掉了这个自动加载器。
为什么这里不直接用 include 呢? 还是为了性能考虑,并不是每个应用的每个页面都需要 composer 去自动加载, include 的话,每个请求无论是否需要都要读取一次这个文件,他想做到按需加载。
为什么注销之后还能运行? 那是因为你之前没注销的时候,他已经生成了加载文件的映射数据,就是后面的 autoload_psr static files 那些, 注销自动加载器没有影响这些文件的载入和你的应用效果。