From 186725a556ce4d9b4a6735e411d21f17e23bfc9f Mon Sep 17 00:00:00 2001 From: Luke Kuzmish Date: Sun, 23 Nov 2025 08:38:17 -0500 Subject: [PATCH 1/2] optimize matchAgainstRoute --- .../Routing/AbstractRouteCollection.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Illuminate/Routing/AbstractRouteCollection.php b/src/Illuminate/Routing/AbstractRouteCollection.php index 0c59a555009e..4dd666acb828 100644 --- a/src/Illuminate/Routing/AbstractRouteCollection.php +++ b/src/Illuminate/Routing/AbstractRouteCollection.php @@ -79,13 +79,20 @@ function ($method) use ($request) { */ protected function matchAgainstRoutes(array $routes, $request, $includingMethod = true) { - [$fallbacks, $routes] = (new Collection($routes))->partition(function ($route) { - return $route->isFallback; - }); + $fallbackRoute = null; + foreach ($routes as $route) { + if ($route->matches($request, $includingMethod)) { + if ($route->isFallback && $fallbackRoute === null) { + $fallbackRoute = $route; - return $routes->merge($fallbacks)->first( - fn (Route $route) => $route->matches($request, $includingMethod) - ); + continue; + } + + return $route; + } + } + + return $fallbackRoute; } /** From 69b2f0dc9e7a8aeda2e019126901e0321c4497b5 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Sun, 23 Nov 2025 07:48:27 -0600 Subject: [PATCH 2/2] Add fallback route handling in route matching --- src/Illuminate/Routing/AbstractRouteCollection.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Illuminate/Routing/AbstractRouteCollection.php b/src/Illuminate/Routing/AbstractRouteCollection.php index 4dd666acb828..247521cb06f6 100644 --- a/src/Illuminate/Routing/AbstractRouteCollection.php +++ b/src/Illuminate/Routing/AbstractRouteCollection.php @@ -80,6 +80,7 @@ function ($method) use ($request) { protected function matchAgainstRoutes(array $routes, $request, $includingMethod = true) { $fallbackRoute = null; + foreach ($routes as $route) { if ($route->matches($request, $includingMethod)) { if ($route->isFallback && $fallbackRoute === null) {