Php 始终执行laravel路由组关闭

Php 始终执行laravel路由组关闭,php,laravel,Php,Laravel,我对Laravel路由组有问题。Laravel总是在route::group方法中执行闭包。考虑这两条路线: 这在routes/web.php中声明 Route::group(['prefix' => 'posts'],function(){ echo 'posts page'; }); Route::get('home'),function(){ echo 'home page'; }); 当我打开www.example.com/home时,Route::group中的闭包

我对Laravel路由组有问题。Laravel总是在route::group方法中执行闭包。考虑这两条路线:


这在routes/web.php中声明

Route::group(['prefix' => 'posts'],function(){
  echo 'posts page';
});


Route::get('home'),function(){
  echo 'home page';
});
当我打开www.example.com/home时,Route::group中的闭包将执行

所以我得到了这个输出:

张贴页面主页


从逻辑上讲,我应该只将主页作为输出

这是预期的行为

Route::group是Route::get/post组的帮助器/包装器

每个路由::get/post不是回调,只是应该执行初始化来创建路由列表

此外,Route::group不支持get/post:

// Does not work!
Route::group(['prefix' =>'user/{id}'], function ($id) {
    Route::get('view', function() {});
    Route::post('update', function() {});
});

// Works
Route::group(['prefix' => 'user/{id}'], function () {
    Route::get('view', function($id) {});
    Route::post('update', function($id) {});
});
首先,routes/web.php不直接解析请求。它构建了所有可用路由的列表

这意味着应该执行组内的每个Route::get/post偶数并添加规则/变量

Route::group是一个助手,它只是向内部get/post调用添加额外的参数

其次,当routes列表就绪时,内核会找到一个合适的回调/闭包并执行它


换句话说,Route::group将其第一个参数添加到每个Route::get/post inside。

可能是在中间件或内核中声明的?或者可能是RouteServiceProvider这是在routes/web.phpy中声明的。您从未在问题中声明过OK我添加了……是的,但当定义的路由和当前url不匹配时,为什么执行闭包?这些路线也是错误的。Route::group第一个参数必须是arrayThanks,我更新了group语法。组的回调与Route::get/post不同。它们有不同的目标。从逻辑上讲,当第一个参数为false时,第二个参数不应该执行。不,laravel构建了完整的路由列表。若组的回调不会被执行,那个么您将永远不会知道内部路由。您不应该认为该组的回调等于路由的回调。他们看起来很相似,但目标不同。谢谢。知道了;