Yii2框架源码追踪阅读(一)--从入口脚本index.php到类加载器的初始化
来源:互联网 发布:plc编程培训 编辑:程序博客网 时间:2024/06/05 19:33
我们以yii2-basic为源码阅读剖析目标,首先,请到http://www.yiichina.com/download 下载框架源码。
接下来就开始我们的yii2源码阅读之旅吧。
请注意:由于本人会在阅读过程中写入各种注释,有可能导致文章中的代码所在行与实际框架中所在行有出入
请注明文章来源:http://blog.csdn.net/lambert310
从入口脚本index.php开始:
入口脚本为:web/index.php,这是整个yii2的启动入口:
↑index.php全部内容(请注明文章来源:http://blog.csdn.net/lambert310)
4、5行见注释即可,我们直接从第7行的类加载器开始,它引入了上一层目录下vendor/autoload.php,其源码如下:
↑autoload.php全部内容
第5行引入了当前目录下/composer/autoload_real.php,然后在第7行调用了getLoader()这个静态方法,我们继续跟踪:
↑autoload_real.php(1-31行)
在这里看从16行的getLoader()开始,具体可以见代码注释,在第28行将$loader实例化,ClassLoader.php的具体代码稍后剖析,咱们继续往下:
↑autoload_real.php(32-55行),请注明文章来源:http://blog.csdn.net/lambert310
在这里,由于咱们使用的开发环境是php7.0.6,所以$useStaticLoader为True,接下来引入autoload_static.php,相当于引入了下面的这个ComposerStaticInit9f9e4e27e79990b4ee47bd62041b34f3类,然后调用了getInitializer方法并传入前面的$loader作为参数:
↑autoload_static.php(687行--697行),(请注明文章来源:http://blog.csdn.net/lambert310)
在这里使用了闭包,具体效果相当于把本类中的多个成员变量绑给了$loader,我们看到这里的$prefixLengthsPsr4,其实就是一个二维数组:
↑autoload_static.php(16行--31行)
然后下一个$prefixDirsPsr4:
↑autoload_static.php(77行--101行)
最后把$classMap也绑到loader上,$classMap保存了类到文件的直接映射:
↑autoload_static.php(228行--239行)
然后返回,这样就把这些属性配置绑定到了$loader上。
现在让我们回到autoload_real.php,从56行开始:
↑autoload_real.php(56行--79行)
让我们看到第57行,这里调用了$loader自身的register方法并传入了一个参数为true:
↑ClassLoader.php(279行--282行)
然后我们回到autoload_real.php,往下看到59行,这里由于$useStaticLoader为True,所以把
autoload_static.php中ComposerStaticInit9f9e4e27e79990b4ee47bd62041b34f3这个类中的$file数组取出:
↑autoload_statis.php(7行--15行)
然后回到前面autoload_real.php的64行,这里把$file中的各文件都require了一遍。
到这里,咱们的第一篇:《从入口脚本index.php到类加载器的初始化》,就剖析完毕了,
下一次会带来应用主体初始化的剖析。
- Yii2框架源码追踪阅读(一)--从入口脚本index.php到类加载器的初始化
- CI框架源码阅读笔记2 一切的入口 index.php
- CodeIgniter源码阅读笔记(1)——框架入口index.php
- CI框架源码解析一之入口文件index.php
- CI框架源码解析一之入口文件index.php
- Yii2底层源码解读系列之一 入口文件index.php
- PHP框架解析之从入口说起index.php
- CodeIgniter框架源码笔记(2)——请求的接收者:框架入口index.php
- PHP yii 框架源码阅读(一)
- CI框架源码完全分析之入口文件index.php
- docker源码阅读笔记(一)---- docker的入口
- CI 框架 入口文件 index.php 程序开始的地方
- tomcat源码阅读(一) 入口
- CI框架(五)单一入口文件index.php分析
- YII2.0配置index.php入口文件至根目录
- YII2 URL美化以及隐藏入口文件index.php
- CodeIgniter框架源码学习之框架入口文件--index.php
- Yii2源码分析(1)-- index.php
- 【NOIP2014八校联考第4场第2试10.20】乐曲创作
- POJ1003 solve Hangover
- 多线程的几种控制方式
- opencv将图片变成固定比例,多余部分黑色填充
- 给你的组件添加Label
- Yii2框架源码追踪阅读(一)--从入口脚本index.php到类加载器的初始化
- BaseAdapter封装优化
- STL之Map完整(Linux内核)内部实现
- 那些年我用awk时踩过的坑——awk使用注意事项
- 排序
- LeetCode-141. Linked List Cycle
- [贪心 枚举] BZOJ 3214 [Zjoi2013]丽洁体
- 计算机原理学习(1)-- 冯诺依曼体系和CPU工作原理
- HDU2444 【二分图判定+最大匹配】