getActionName() === 'Closure') { return new \ReflectionFunction($route->getAction()['uses']); } if (!str_contains($route->getActionName(), '@')) { return new \ReflectionClass($route->getActionName()); } try { return new \ReflectionMethod($route->getControllerClass(), $route->getActionMethod()); } catch (\Throwable $e) { $namespace = app(\Illuminate\Routing\UrlGenerator::class)->getRootControllerNamespace() ?? (app()->getNamespace() . 'Http\Controllers'); return new \ReflectionMethod( $namespace . '\\' . ltrim($route->getControllerClass(), '\\'), $route->getActionMethod(), ); } } return collect(app('router')->getRoutes()->getRoutes()) ->map(function (\Illuminate\Routing\Route $route) { try { $reflection = vsCodeGetRouterReflection($route); } catch (\Throwable $e) { $reflection = null; } return [ 'method' => collect($route->methods())->filter(function ($method) { return $method !== 'HEAD'; })->implode('|'), 'uri' => $route->uri(), 'name' => $route->getName(), 'action' => $route->getActionName(), 'parameters' => $route->parameterNames(), 'filename' => $reflection ? $reflection->getFileName() : null, 'line' => $reflection ? $reflection->getStartLine() : null, ]; }) ;