static function run($ruta = null) { self::$LPAR = array(); self::$uri = $ruta ? $ruta : substr($_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], strlen(self::$base) - 2); self::$url = self::$base . self::$uri; foreach (explode('/', self::$uri) as $param) { if ($param) { $param = urldecode($param); if (($pos = strpos($param, '?')) !== false) { $gets = substr($param, $pos + 1); self::$LPAR[] = substr($param, 0, $pos); } else { self::$LPAR[] = $param; } } } $lpar = self::$LPAR; $coincide = false; $ruts = array_keys(self::$rutas); foreach ($ruts as $ruta) { if (!$coincide) { $rut = explode('/', $ruta); $coinc = 0; foreach ($rut as $k => $ru) { if (isset(self::$LPAR[$k]) && ($ru == self::$LPAR[$k] || preg_match('/(*UTF8)^' . $ru . '$/', self::$LPAR[$k]))) { $coinc++; } else { $coinc = 0; break; } } if (count($lpar) > 0 && count($lpar) == $coinc) { $coincide = $ruta; } } } if ($coincide) { $func = self::$rutas[$coincide]; $func(); return true; } if (!headers_sent()) { header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found'); } if (is_callable(self::$error)) { self::$error(); } else { echo self::$error; } return false; }