Example #1
0
 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;
 }