public static function getCurrentRoute() { $list = Route::getRouteList(); $found = false; $currentRoute = null; $uri = urldecode($_SERVER["REQUEST_URI"]); $uri = ltrim($uri, '/'); // Отсекаем лишние части URL. $uriSplitted = explode('#', $uri); $uri = $uriSplitted[0]; $uriSplitted = explode('?', $uri); $uri = $uriSplitted[0]; // Разбираем URL на параметры. $uriSplitted = explode('/', $uri); $action = array_shift($uriSplitted); // Если действие не задано, возвращаем пустой маршрут. if (empty($action)) { return new Route('', array()); } $userValues = $uriSplitted; // Нашли маршрут с подходящим значением "action". $currentRoute = Route::getRouteForAction($action); if ($currentRoute == null) { trigger_error("Route::getCurrentRoute(): Несуществующий маршрут.", E_USER_ERROR); } // Заполняем значения параметров. $currentRoute->validateParams($userValues, false); if (!empty($currentRoute->params)) { $i = 0; foreach ($currentRoute->params as $option) { $currentRoute->values[$option] = $userValues[$i]; $i++; } } return $currentRoute; }