Laravel 系列路由、闭包、控制器

 时间:2026-02-14 20:28:10

1、Laravel 5 之后就把路由放到了 learnlaravel5/app/Http/routes.php 这个位置,我们先看一下目前路由中仅存的几行代码:

Route::get('/', function () { return view('welcome'); }); Route::auth(); Route::get('/home', 'HomeController@index');

中间的一行代码 Route::auth(); 就是 Auth 系统自动注入的路由配置,我们不用深究,我们的注意力主要集中头三行和最后一行代码上。

Laravel 系列路由、闭包、控制器

2、闭包路由使用闭包作为此条请求的响应代码,方便灵活,很多简单操作直接在闭包里解决即可。例如“输出服务器当前时间”:

Route::get('now', function () {  

    return date("Y-m-d H:i:s");

Laravel 系列路由、闭包、控制器

3、如果你想得到北京时间,请在 learnlaravel5/config/app.php 第 55 行左右把 timezone 设置为上海:

'timezone' => 'Asia/Shanghai',  

Laravel 系列路由、闭包、控制器

4、控制器@方法 路由

闭包路由虽然灵活强大,不过大多数场景下我们还是需要回归到 MVC 架构的:

Route::get('/home', 'HomeController@index');

之后命名空间、类、方法是如何传递的呢?

learnlaravel5/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php

经过简单的追踪,我们找到了这个文件。让我们在 dispatch 方法中增加一行var_dump($controller);,刷新就可以看到页面上如下的输出:

Laravel 系列路由、闭包、控制器

5、Route::get('/find',function(){

     return "最新发现";

});

Laravel 系列路由、闭包、控制器

6、Route::get('/home', 'HomeController@index');

Laravel 系列路由、闭包、控制器

7、最后一步

Laravel 使用了完整的面向对象程序架构,对控制器的调用进行了超多层封装,所以最简单地探测方式其实是手动抛出错误,这样就可以看到完整的调用栈:

在 HomeController 的 index 方法里的 return 之前增加一行 throw new \Exception("会出现报错", 1);,刷新页面,你将看到以下画面:

Laravel 系列路由、闭包、控制器

  • Axure原型工具如何将日期输入框设置成默认日期
  • 志愿汇如何参加关注组织的活动签到?
  • 手工折纸——旺旺
  • 表扬孩子的六大禁忌
  • 移动web和webapp有什么区别
  • 热门搜索
    生活恰恰恰 平年和闰年怎么算 还来就菊花的还怎么读 如何制作mv视频 生活不易 如何拍电影 江苏警官学院怎么样 如何快速入眠 如何学习会计 如何办理退休手续