讨论数量:
第一个是可调用的闭包,闭包里return
了响应内容;
第二个传入的是个对象,既不能调用,也不能解析出控制器方法,虽然说它是个响应内容,但没人帮你 return
。
说白了就是按照文档来,这两种写法不是一回事。
闭包里面可以包含其他逻辑, 灵活性好. 大概吧.如
Route::get('/users', function () {
// 我还可以在这里做其他逻辑入口,比如放点检查用户权限的代码,或者
checkUser();
// 记录日志
log::info("users route". time());
return Response::json([
// ...
]);
});
而下面的就没有这种灵活性了,比如让你访问这个路由的时候,统计访问次数,下面的结构就不好实现了.
Route::get('/users', Response::json([
// ...
])
);
因为注册路由时,路由对应的逻辑是不需要执行的。当路由匹配到了才会去执行对应路由注册的逻辑。闭包函数其实是个Closure
对象,只有调用他的时候,闭包函数里面的代码才会被执行。
你第二种方法,其实是在注册路由时,就执行了全站的逻辑,就算代码跑得起来,也跑不动。
推荐文章: