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