Ejemplo n.º 1
0
 /**
  * Método que busca el componente que ejecuta la ruta
  *
  * @param string $route
  *
  * @throws \PSFS\base\exception\RouterException
  */
 protected function searchAction($route)
 {
     Logger::log('Searching action to execute: ' . $route, LOG_INFO);
     //Revisamos si tenemos la ruta registrada
     $parts = parse_url($route);
     $path = array_key_exists('path', $parts) ? $parts['path'] : $route;
     $httpRequest = Request::getInstance()->getMethod();
     foreach ($this->routing as $pattern => $action) {
         list($httpMethod, $routePattern) = RouterHelper::extractHttpRoute($pattern);
         $matched = RouterHelper::matchRoutePattern($routePattern, $path);
         if ($matched && ($httpMethod === "ALL" || $httpRequest === $httpMethod) && RouterHelper::compareSlashes($routePattern, $path)) {
             $get = RouterHelper::extractComponents($route, $routePattern);
             /** @var $class \PSFS\base\types\Controller */
             $class = RouterHelper::getClassToCall($action);
             try {
                 $this->executeCachedRoute($route, $action, $class, $get);
             } catch (\Exception $e) {
                 Logger::log($e->getMessage(), LOG_ERR);
                 throw new RouterException($e->getMessage(), 404, $e);
             }
         }
     }
     throw new RouterException(_("Ruta no encontrada"));
 }