/** * Обработка переданного URL */ public static function dispatch($requestedUrl = null) { // Если URL не передан, берем его из REQUEST_URI if ($requestedUrl === null) { $uri = reset(explode('?', $_SERVER["REQUEST_URI"])); $requestedUrl = urldecode(rtrim($uri, '/')); } self::$requestedUrl = $requestedUrl; // если URL и маршрут полностью совпадают if (isset(self::$routes[$requestedUrl])) { self::$params = self::splitUrl(self::$routes[$requestedUrl]); return self::executeAction(); } //echo self::$routes[$requestedUrl]; //print_r(self::$routes); foreach (self::$routes as $route => $uri) { // Заменяем wildcards на рег. выражения if (strpos($route, ':') !== false) { $route = str_replace(':any', '(.+)', str_replace(':num', '([0-9]+)', $route)); } if (preg_match('#^' . $route . '$#', $requestedUrl)) { if (strpos($uri, '$') !== false && strpos($route, '(') !== false) { $uri = preg_replace('#^' . $route . '$#', $uri, $requestedUrl); } self::$params = self::splitUrl($uri); break; // URL обработан! } } print_r(self::$params); return self::executeAction(); }