/** * Process the request. * * @return Route */ public static function process() { $requestPath = Request::pathInfo(); if (Request::pathInfo() === '/') { return static::getRoute('root'); } foreach (static::$routes as $route) { $pattern = static::regex($route->compiledPath()); if (!in_array(Request::$method, array_map('strtoupper', $route->methods))) { continue; } // Match exact path and request method if ($route->path == $requestPath) { $route->params = $route->defaults; Request::$properties->set($route->params); return $route; } elseif (preg_match($pattern, $requestPath, $params)) { unset($params[0]); // Merge params $route->params = $params + $route->defaults; Request::$properties->set($route->params); return $route; } } }
/** * Creates the URI for the specified page. * * @param integer $page * * @return string */ public function createUri($page) { $queryString = $this->query; $queryString[] = "page={$page}"; $queryString = implode('&', $queryString); return Request::pathInfo() . "?{$queryString}"; }