Laravel 4 入门三讲(下)laravel 在注册路由后还执行了哪些操作?

原创
2013/12/03 19:48
阅读数 3.2K

  上篇介绍了 Laravel 的路由注册机制“Laravel 4 的路由是如何完成注册的?”作为这个系列的最后一讲,本篇将要为大家介绍的,是执行了 $app->run() 之后所发生的事,以及这个过程中涉及到的应用程序事件。

  在完成了路由的注册后,紧接着执行的就是 public/index.php 中的 $app->run(); 让我们来看一下 run 方法的源码:

public function run()
{
    // 调度路由返回响应实例
    $response = $this->dispatch($this['request']);

    // 执行 close 应用程序事件
    $this['router']->callCloseFilter($this['request'], $response);

    // 发送响应
    $response->send();

    // 执行 finish 应用程序事件
    $this['router']->callFinishFilter($this['request'], $response);
}

  下面是整个流程的分析:

  1. 第4行,执行了路由调度操作 dispatch
    1. 执行应用程序事件 App::before(function($request){})
    2. 执行 Illuminate\Routing\Route.php 的 run 方法
      1. 执行 Route::filter($route, $request) 前置操作
      2. 最终业务回调,取得响应实例(这里执行了之前注册进路由的回调函数)
      3. 执行 Route::filter($route, $request, $response) 后置操作
    3. 执行应用程序事件 App::after(function($request, $response){})
  2. 第7行,执行应用程序事件 App::close(function($request, $response){})
  3. 第10行,发送 1-2-2 中获取的响应实例
  4. 第13行,执行应用程序事件 App::finish(function($request, $response){})
  5. 最后在 public/index.php 中的 $app->shutdown() 时,执行最后的应用程序事件 App::shutdown(function($application){})



展开阅读全文
打赏
2
6 收藏
分享
加载中
打赏
1 评论
6 收藏
2
分享
返回顶部
顶部