ThinkPHP6源码中,Http类实例化如何体现依赖注入机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2281个文字,预计阅读时间需要10分钟。
`$bind` 的值是一组从标识符映射到类的映射。从这个实现可以看出,我们不仅可以在 `provider.php` 文件中添加标识符到类的映射,还可以覆盖原有的映射,甚至将某些核心类替换成自定义的类。
以下源码分析,我们可以从 App,Http 类的实例化过程,了解类是如何实现自动实例化的,依赖注入是怎么实现的。
从入口文件出发
当访问一个 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() 实例化时,首先会调用它的构造函数。
本文共计2281个文字,预计阅读时间需要10分钟。
`$bind` 的值是一组从标识符映射到类的映射。从这个实现可以看出,我们不仅可以在 `provider.php` 文件中添加标识符到类的映射,还可以覆盖原有的映射,甚至将某些核心类替换成自定义的类。
以下源码分析,我们可以从 App,Http 类的实例化过程,了解类是如何实现自动实例化的,依赖注入是怎么实现的。
从入口文件出发
当访问一个 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() 实例化时,首先会调用它的构造函数。

