@@ -83,6 +83,13 @@ class Router implements MiddlewareInterface, RequestHandlerInterface, RequestMet
8383 */
8484 private $ middlewares = [];
8585
86+ /**
87+ * The router's matched route
88+ *
89+ * @var RouteInterface|null
90+ */
91+ private $ matchedRoute = null ;
92+
8693 /**
8794 * Gets the router host table
8895 *
@@ -115,6 +122,16 @@ public function getMiddlewares() : array
115122 return array_values ($ this ->middlewares );
116123 }
117124
125+ /**
126+ * Gets the router's matched route
127+ *
128+ * @return RouteInterface|null
129+ */
130+ public function getMatchedRoute () : ?RouteInterface
131+ {
132+ return $ this ->matchedRoute ;
133+ }
134+
118135 /**
119136 * Adds the given patterns to the router
120137 *
@@ -355,7 +372,9 @@ public function run(ServerRequestInterface $request) : ResponseInterface
355372 {
356373 // lazy resolving of the given request...
357374 $ routing = new CallableRequestHandler (function (ServerRequestInterface $ request ) : ResponseInterface {
358- return $ this ->match ($ request )->handle ($ request );
375+ $ route = $ this ->match ($ request );
376+ $ this ->matchedRoute = $ route ;
377+ return $ route ->handle ($ request );
359378 });
360379
361380 $ middlewares = $ this ->getMiddlewares ();
@@ -375,6 +394,7 @@ public function run(ServerRequestInterface $request) : ResponseInterface
375394 public function handle (ServerRequestInterface $ request ) : ResponseInterface
376395 {
377396 $ route = $ this ->match ($ request );
397+ $ this ->matchedRoute = $ route ;
378398
379399 $ middlewares = $ this ->getMiddlewares ();
380400 if (empty ($ middlewares )) {
0 commit comments