public static function parseUri($uriToParse) { $result = array(); $routes = Router::getRoutes(); $hasArea = Router::uriHasArea($uriToParse); $normalizedUri = Router::normalizeUri($uriToParse); $normalizedSplitUri = explode("/", $normalizedUri); // try custom routes foreach ($routes as $route) { if ($hasArea) { if (strstr($normalizedUri, "/") !== false) { $normalizedUri = strstr($normalizedUri, "/"); $normalizedUri = substr($normalizedUri, 1); } } if (Router::startsWith($normalizedUri, $route["url"])) { if ($hasArea) { $result['area'] = $route['area']; } $result['controller'] = $route['controller']; $result['method'] = $route['method']; $paramsUri = str_ireplace($route['url'], "", $normalizedUri); $params = explode("/", $paramsUri); $result['parameters'] = array_filter($params); return $result; } } // default route if ($hasArea) { $result['area'] = $normalizedSplitUri[0]; $result['controller'] = $normalizedSplitUri[1] . "Controller"; if (isset($normalizedSplitUri[2])) { $result['method'] = $normalizedSplitUri[2]; $result['parameters'] = array_slice($normalizedSplitUri, 3); } else { $result['method'] = 'index'; } } else { $result['controller'] = $normalizedSplitUri[0] . "Controller"; if (isset($normalizedSplitUri[1])) { $result['method'] = $normalizedSplitUri[1]; $result['parameters'] = array_slice($normalizedSplitUri, 2); } else { $result['method'] = 'index'; } } return $result; }