0
点赞
收藏
分享

微信扫一扫

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

thinkphp源码详细阅读(一)

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

请求流程

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

下一期

  1. 创建类实例 ​​make​​ 分析

举报

相关推荐

0 条评论