2016年9月30日 星期五

Laravel 框架启动过程

详细的了解 laravel 框架的启动过程,有助于我们在不同的启动阶段进行扩展性的开发

1、入口文件

index.php
导入 composer 自动加载功能 ./bootstrap/autoload.php

2、启动文件

导入 laravel 容器 ./bootstrap/app.php
  1. 启动容器
    1. 注册容器自身(registerBaseBindings)
    2. 注册事件系统和路由系统(registerBaseServiceProviders)
    3. 注册 laravel 自有类别名(registerCoreContainerAliases)
  2. 注册 Http 处理器
  3. 注册 Cli 处理器
  4. 注册异常处理器

3、Http 处理器

  • 启动 Http 处理器:Illuminate\Contracts\Http\Kernel->handle($request)
  • 进入 Http 请求处理工作:Illuminate\Contracts\Http\Kernel->sendRequestThroughRouter
    1. 重新在容器中绑定 request
    2. 启动并配置 HTTP 相关的服务组件(Illuminate\Foundation\Bootstrap* 中的所有组件)
       启动顺序:
       1. DetectEnvironment Dotenv 配置
       2. LoadConfiguration Config 配置 (/bootstrap/cache/config.php 或者 /config/*)
       3. ConfigureLogging 日志系统配置
       4. HandleExceptions php报错配置
       5. RegisterFacades 注册外观
       6. RegisterProviders 注册用户服务提供器
       7. BootProviders 启动所有提供器
      
    3. 路由管理器 Pipeline :
      穿过全局中间件 $middleware
      Router->dispatch(Request $request);
      Router->dispatchToRoute(Request $request);
      Router->runRouteWithinStack(Route $route, Request $request)
    4. 匹配到路由 Pipeline :
      穿过路由中间件 $routeMiddleware
      Route->run(Request $request)
      Route->runController(Request $request)
      Controller->method()
    5. 业务逻辑
      • 处理反射
      • 用户业务逻辑
    6. 处理 Response
      • 字符串
      • 普通 Response
      • 跳转 Response
      • JsonResponse
      • ViewResponse

4、请求返回

  1. 应答对象发送到浏览器 $response->send();
  2. 运行可终止中间件(可终止中间件会是新的中间件实例,除非中间件被设置为单例模式)
  3. 应用终止后处理 Illuminate\Contracts\Http\Kernel->terminate($request, $response)

from : http://laravel.so/tricks/e977de4b9aab434e1fa66cec77f25f19

沒有留言:

wibiya widget