public function route(Request $request) { $routes =& $this->routes[$request->method()]; $values = null; $response = null; if (isset($routes)) { foreach ($routes as $route) { $values = []; $matches = null; $nmatches = preg_match($route['regexp'], $request->path(), $matches); if ($nmatches > 0) { foreach ($route['params'] as $key) { if (!isset($matches[$key])) { break; } $values[$key] = $matches[$key]; } if (count($values) == count($route['params'])) { $response = $this->call($route, $values, $request); break; } } } } return $response; }