TP源码分析

【2022/02/02】thinkphp源码详细阅读(一)

2022-02-01  本文已影响0人  梦中程序员

thinkphp源码详细阅读(一)

image

请求流程

  1. 从入口 index.php 开始
  2. 实例化 App ,我们看一下实例化所做的工作
    image
  3. 设置 thinkPathrootPathappPathruntimePath
  4. 加载服务文件 provider.php ,具体如何实现,我们可以看绑定到容器实现部分代码
    image
  5. provider.php 中返回的数组,代码的执行就是先循环,然后调用 bind 传入标识和类名称,类名称不是闭包,也不是类对象,所以进入 else
  6. 然后根据别名获取真实的类名称
    image
  7. 绑定闭包和对象也需要了解,如果是闭包则直接绑定,如果是对象,则获取真实类名,然后绑定到实例上,目前暂未可知为什么闭包不使用真实类名?
    image
  8. 设置当前容器实例
  9. 最后把标识 appthink\Container 绑定到容器实例上
  10. 实例化完成以后,获取 http 属性,这个时候发现 App 和它的父类 Container 中并没有这个属性,这个时候就会执行魔术方法 __get
    image
  11. 判断容器中是否有 http ,有的话就创建实例,没有就抛出异常
    image

下一期

  1. 创建类实例 make 分析
上一篇 下一篇

猜你喜欢

热点阅读