ThinkPHP6源码中,Http类实例化如何体现依赖注入机制?

2026-05-03 00:322阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2281个文字,预计阅读时间需要10分钟。

ThinkPHP6源码中,Http类实例化如何体现依赖注入机制?

`$bind` 的值是一组从标识符映射到类的映射。从这个实现可以看出,我们不仅可以在 `provider.php` 文件中添加标识符到类的映射,还可以覆盖原有的映射,甚至将某些核心类替换成自定义的类。

以下源码分析,我们可以从 AppHttp 类的实例化过程,了解类是如何实现自动实例化的,依赖注入是怎么实现的。

从入口文件出发


当访问一个 ThinkPHP 搭建的站点,框架最先是从入口文件开始的,然后才是应用初始化、路由解析、控制器调用和响应输出等操作。

入口文件主要代码如下:

立即学习“PHP免费学习笔记(深入)”;

// 引入自动加载器,实现类的自动加载功能(PSR4标准) // 对比Laravel、Yii2、Thinkphp的自动加载实现,它们基本就都一样 // 具体实现可参考我之前写的Laravel的自动加载实现: // @link: https://learnku.com/articles/20816 require __DIR__ . '/../vendor/autoload.php'; // 这一句和分为两部分分析,App的实例化和调用「http」,具体见下文分析 $http = (new App())->http; $response = $http->run(); $response->send(); $http->end($response);

App 实例化


执行 new App() 实例化时,首先会调用它的构造函数。

阅读全文
标签:Thinkphp6

本文共计2281个文字,预计阅读时间需要10分钟。

ThinkPHP6源码中,Http类实例化如何体现依赖注入机制?

`$bind` 的值是一组从标识符映射到类的映射。从这个实现可以看出,我们不仅可以在 `provider.php` 文件中添加标识符到类的映射,还可以覆盖原有的映射,甚至将某些核心类替换成自定义的类。

以下源码分析,我们可以从 AppHttp 类的实例化过程,了解类是如何实现自动实例化的,依赖注入是怎么实现的。

从入口文件出发


当访问一个 ThinkPHP 搭建的站点,框架最先是从入口文件开始的,然后才是应用初始化、路由解析、控制器调用和响应输出等操作。

入口文件主要代码如下:

立即学习“PHP免费学习笔记(深入)”;

// 引入自动加载器,实现类的自动加载功能(PSR4标准) // 对比Laravel、Yii2、Thinkphp的自动加载实现,它们基本就都一样 // 具体实现可参考我之前写的Laravel的自动加载实现: // @link: https://learnku.com/articles/20816 require __DIR__ . '/../vendor/autoload.php'; // 这一句和分为两部分分析,App的实例化和调用「http」,具体见下文分析 $http = (new App())->http; $response = $http->run(); $response->send(); $http->end($response);

App 实例化


执行 new App() 实例化时,首先会调用它的构造函数。

阅读全文
标签:Thinkphp6