public static function parse($url)
{
if (!static::$initialized) {
static::_loadRoutes();
}
$ext = null;
$out = array();
if (strlen($url) && strpos($url, '/') !== 0) {
$url = '/' . $url;
}
if (strpos($url, '?') !== false) {
list($url, $queryParameters) = explode('?', $url, 2);
parse_str($queryParameters, $queryParameters);
}
extract(static::_parseExtension($url));
foreach (static::$routes as $route) {
if (($r = $route->parse($url)) !== false) {
static::$_currentRoute[] = $route;
$out = $r;
break;
}
}
if (isset($out['prefix'])) {
$out['action'] = $out['prefix'] . '_' . $out['action'];
}
if (!empty($ext) && !isset($out['ext'])) {
$out['ext'] = $ext;
}
if (!empty($queryParameters) && !isset($out['?'])) {
$out['?'] = $queryParameters;
}
return $out;
}