@@ -38,6 +38,13 @@ class Request extends WP_REST_Request implements Arrayable, Jsonable, JsonSerial
3838 */
3939 protected $ userResolver ;
4040
41+ /**
42+ * The route resolver
43+ *
44+ * @var \Closure
45+ */
46+ protected $ routeResolver ;
47+
4148 /**
4249 * Create the request instance
4350 *
@@ -94,6 +101,7 @@ public static function createFrom(self $from, ?Request $to = null)
94101 $ request ->set_cookie_params ($ from ->get_cookie_params ());
95102 $ request ->set_server_params ($ from ->get_server_params ());
96103 $ request ->setUserResolver ($ from ->getUserResolver ());
104+ $ request ->setRouteResolver ($ from ->getRouteResolver ());
97105
98106 return $ request ;
99107 }
@@ -196,19 +204,46 @@ public function get_cookie_params(): array
196204 }
197205
198206 /**
199- * Get the request route parameters
207+ * Get the request route
200208 *
201- * @param string|null $key
209+ * @param string|null $parameters
202210 * @param mixed|null $default
203- * @return mixed
211+ * @return \Radiate\Routing\Route| mixed
204212 */
205- public function route (?string $ key = null , $ default = null )
213+ public function route (?string $ parameter = null , $ default = null )
206214 {
207- if ($ key ) {
208- return $ this ->get_url_params ()[$ key ] ?? $ default ;
215+ $ route = call_user_func ($ this ->getRouteResolver ());
216+
217+ if (is_null ($ route ) || is_null ($ parameter )) {
218+ return $ route ;
209219 }
210220
211- return $ this ->get_url_params ();
221+ return $ route ->parameter ($ parameter , $ default );
222+ }
223+
224+ /**
225+ * Set the route resolver
226+ *
227+ * @param \Closure $resolver
228+ * @return self
229+ */
230+ public function setRouteResolver (Closure $ resolver )
231+ {
232+ $ this ->routeResolver = $ resolver ;
233+
234+ return $ this ;
235+ }
236+
237+ /**
238+ * Get the route resolver
239+ *
240+ * @return \Closure
241+ */
242+ public function getRouteResolver ()
243+ {
244+ return $ this ->routeResolver ?: function () {
245+ //
246+ };
212247 }
213248
214249 /**
0 commit comments