ThinkPHP自动加载Loader源码分析(1)

简介: ThinkPHP自动加载Loader源码分析

前言

目前在整理PHP进阶路线图,如有好的建议咔咔会第一时间进行收录。

一、自动加载loader源码分析

1-1 学习目标

  • 类的自动加载
  • 类自动加载的俩种方式
  • spl_autoload_register必须会使用
  • 实现自定义文件的类的自动加载

1-2 Composer加载


image.png

从上图咔咔给的解析图,在base.php中首先加载了loader类,接着调用了register这个方法。


image.png


来到thinkphp\library\think\Loader.php有一个register的方法,在这个方法里边,我们先学习第一个知识点spl_autoload_register()聊聊spl_autoload_register前世今生和简单使用,直接点击即可查看。


紧接着就是项目的根路径和composer的路径。


image.png


从这里开始就是在加载composer文件,过程也是很简单


1.判断composer是否为目录

2.判断路径下面的autoload_static.php是否为文件

3.引入autoload_static.php文件

4.返回所有已经声明的所有类 数组返回

5.获取最后一个类ComposerStaticInit30742487e00917c888d89ba216f165b9

6.判断ComposerStaticInit30742487e00917c888d89ba216f165b9中是否存在数组中的数据


image.png


接着可以去vendor\composer\autoload_static.php文件中可以看到这俩个属性


image.png


这里有一段代码估计有一部分同学会在这里绕一下self::${$attr} = $composerClass::${$attr};,这里的$attr就是'prefixLengthsPsr4', 'prefixDirsPsr4', 'fallbackDirsPsr4', 'prefixesPsr0', 'fallbackDirsPsr0', 'classMap', 'files'这些数据,外层在加一个$符号。


从而在ComposerStaticInit30742487e00917c888d89ba216f165b9这个类中直接获取对应的属性值,也就是上图的俩个属性值。


image.png



相关文章
|
设计模式 存储 架构师
ThinkPHP5源码阅读-类的自动加载register与autoload的实现
PHP快速入门与实战ThinkPHP是国内最流行的一款PHP框架,是国人自主研发的框架,起源于2006年,经过了十几年的不断发展。已经成为了一款被PHP广泛认可的性能开发效率兼具的利器。阅读框架源码有助于我们更好的学习语言基础,拓展设计模式等相关能力。同时很多设计与编码的思想也能更好的指导我们日常工作,尤其是想成为资深程序员或者架构师方面的同事,这是一个必须要学习的过程。今天是ThinkPHP5源码第一讲,关于类的自动加载,看看源码底层是怎么实现的。怕迷路的同学,先给个关注吧。
103 0
Yii2如何实现自动加载?底层原理是什么?
Yii2如何实现自动加载?底层原理是什么?
151 0
|
PHP
ThinkPHP自动加载Loader源码分析(3)
ThinkPHP自动加载Loader源码分析
319 0
ThinkPHP自动加载Loader源码分析(3)
|
PHP
ThinkPHP自动加载Loader源码分析(2)
ThinkPHP自动加载Loader源码分析
159 0
ThinkPHP自动加载Loader源码分析(2)
|
PHP
ThinkPHP自动加载Loader源码分析(4)
ThinkPHP自动加载Loader源码分析
135 0
ThinkPHP自动加载Loader源码分析(4)
|
运维 关系型数据库 MySQL
ThinkPHP你必须要掌握的配置加载(2)
ThinkPHP你必须要掌握的配置加载
195 0
ThinkPHP你必须要掌握的配置加载(2)
|
XML JSON 数据处理
ThinkPHP你必须要掌握的配置加载(4)
ThinkPHP你必须要掌握的配置加载
132 0
ThinkPHP你必须要掌握的配置加载(4)
|
PHP 容器
ThinkPHP你必须要掌握的配置加载(3)
ThinkPHP你必须要掌握的配置加载
145 0
ThinkPHP你必须要掌握的配置加载(3)
|
设计模式 运维 安全
ThinkPHP你必须要掌握的配置加载(6)
ThinkPHP你必须要掌握的配置加载
204 0
ThinkPHP你必须要掌握的配置加载(6)
|
PHP
ThinkPHP你必须要掌握的配置加载(1)
ThinkPHP你必须要掌握的配置加载
146 0
ThinkPHP你必须要掌握的配置加载(1)