控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递(注入)给它。
index.php
容器核心思想
bind – 每次通过make实例化新的对象
singleton – 注册单例, 加载后注册至 instances 中
instance – 通过已经实例化的对象注册单例
通过反射将所有的依赖注类递归进行实例化
bootstrap/autoload.php
类自动加载
1 | <!-- 核心函数 --> |
bootstrap/app.php
实例化 Illuminate\Foundation\Application 类
- 设置应用程序的基础路径
1 | $this->basePath = rtrim($basePath, '\/'); |
- 设置应用程序的基础绑定
1 | static::setInstance($this); |
- 注册基础服务提供商 & 绑定基础依赖
1 | $this->register(new EventServiceProvider($this)); |
- 注册服务别名
1 | $this->aliases = [ |
- 继续绑定核心依赖
1 | $this->bindings = [ |
- 实例化App\Http\Kernel
1 | // 设置路由中间件(优先) |
- 开启对_method请求参数的支持
- $request是经过Symfony封装的请求对象
- 注册request实例到容器 ($app[‘request’]->Illuminate\Http\Request)
- 清空之前容器中的request实例
- 调用bootstrap方法,启动一系列启动类的bootstrap方法:
1 | - Illuminate\Foundation\Bootstrap\DetectEnvironment 环境配置($app[‘env’]) |
- 通过Pipeline发送请求,经过中间件,再由路由转发,最终返回响应