src/ForeverPHP/Routing/Router.php
public function run()
    {
        // Obtiene la Url base
        $this->getUriBase();

        // Obtiene la ruta actual
        $route = $this->addSlash($this->getRoute());

        // Valida que tipo de ruta se solicito
        $routeContent = null;
        $appName = null;

        if (array_key_exists($route, $this->routes)) {
            $route = $this->routes[$route];

            if ($route['app'] != null) {
                $appName = $route['app'];
                $routeContent = $route;
            } else {
                $routeContent = $route['function'];
            }

            // Registro los parametros pasados en la solicitud
            Request::register();
        } else {
            // Se remueve el ultimo slash ya que rutas complejas no lo requieren
            //$route = self::remove_slash($route);
            if (!$this->loadParamsRoute($route, $routeContent)) {
                $routeContent = null;
            }
        }

        // Agrega las cabeceras a la respuesta de existir
        $this->setHeadersToResponse();

        /*
         * Almacena el nombre de la ruta actual si es que lo tiene, dependiendo
         * si es una ruta normal o compleja y si es funcion o vista.
         */
        if (is_array($route)) {
            $this->nameForRoute = $route['name'];
        } elseif (is_array($routeContent)) {
            $this->nameForRoute = $routeContent['name'];
        }

        /*
         * NOTA: Los decoradores solo pueden ser utilizados en rutas con vistas
         *       no en rutas con funciones anonimas.
         */

        if (is_array($routeContent)) {
            if ($appName == null) {
                $appName = $routeContent['app'];
            }

            // Primero se verifica que la aplicacion este agregada en la configuracion
            $app = App::getInstance();
            if ($app->exists($appName)) {
                $app->load($appName);

                // Cargo el autoload.php, archivo opcional
                $autoloadPath = APPS_ROOT . DS . 'autoload.php';

                if (Storage::exists($autoloadPath)) {
                    include_once $autoloadPath;
                }

                // Ejecuta los decoradores de la ruta si es que hay
                $middlewares = $routeContent['middlewares'];

                if (!is_null($middlewares)) {
                    foreach ($middlewares as $middleware) {
                        $returnValue = $app->getMiddleware($middleware);

                        // Valida si el decorador retorna un Response
                        if ($returnValue instanceof \ForeverPHP\Http\ResponseInterface) {
                            $app->run($returnValue);
                        }
                    }
                }

                $app->run($routeContent);
            } else {
                throw new AppException("La aplicación ($appName) a la que pertenece la vista no esta " .
                    "cargada en settings.php.");
            }
        } elseif (is_callable($routeContent)) {
            $this->runFunction($routeContent);
        } else {
            $this->notView();
        }
    }
public function run()
    {
        // Obtiene la Url base
        $this->getUriBase();

        // Obtiene la ruta actual
        $route = $this->addSlash($this->getRoute());

        // Valida que tipo de ruta se solicito
        $routeContent = null;
        $appName = null;

        if (array_key_exists($route, $this->routes)) {
            $route = $this->routes[$route];

            if ($route['app'] != null) {
                $appName = $route['app'];
                $routeContent = $route;
            } else {
                $routeContent = $route['function'];
            }

            // Registro los parametros pasados en la solicitud
            Request::register();
        } else {
            // Se remueve el ultimo slash ya que rutas complejas no lo requieren
            //$route = self::remove_slash($route);
            if (!$this->loadParamsRoute($route, $routeContent)) {
                $routeContent = null;
            }
        }

        // Agrega las cabeceras a la respuesta de existir
        $this->setHeadersToResponse();

        /*
         * Almacena el nombre de la ruta actual si es que lo tiene, dependiendo
         * si es una ruta normal o compleja y si es funcion o vista.
         */
        if (is_array($route)) {
            $this->nameForRoute = $route['name'];
        } elseif (is_array($routeContent)) {
            $this->nameForRoute = $routeContent['name'];
        }

        /*
         * NOTA: Los decoradores solo pueden ser utilizados en rutas con vistas
         *       no en rutas con funciones anonimas.
         */

        if (is_array($routeContent)) {
            if ($appName == null) {
                $appName = $routeContent['app'];
            }

            // Primero se verifica que la aplicacion este agregada en la configuracion
            $app = App::getInstance();
            if ($app->exists($appName)) {
                $app->load($appName);

                // Cargo el autoload.php, archivo opcional
                $autoloadPath = APPS_ROOT . DS . 'autoload.php';

                if (Storage::exists($autoloadPath)) {
                    include_once $autoloadPath;
                }

                // Ejecuta los decoradores de la ruta si es que hay
                $middlewares = $routeContent['middlewares'];

                if (!is_null($middlewares)) {
                    foreach ($middlewares as $middleware) {
                        $returnValue = $app->getMiddleware($middleware);

                        // Valida si el decorador retorna un Response
                        if ($returnValue instanceof \ForeverPHP\Http\ResponseInterface) {
                            $app->run($returnValue);
                        }
                    }
                }

                $app->run($routeContent);
            } else {
                throw new AppException("La aplicación ($appName) a la que pertenece la vista no esta " .
                    "cargada en settings.php.");
            }
        } elseif (is_callable($routeContent)) {
            $this->runFunction($routeContent);
        } else {
            $this->notView();
        }
    }
public function run ( ) { // Obtiene la Url base $ this -> getUriBase ( ) ; // Obtiene la ruta actual $ route = $ this -> addSlash ( $ this -> getRoute ( ) ) ; // Valida que tipo de ruta se solicito $ routeContent = null ; $ appName = null ; if ( array_key_exists ( $ route , $ this -> routes ) ) { $ route = $ this -> routes [ $ route ] ; if ( $ route [ 'app' ] != null ) { $ appName = $ route [ 'app' ] ; $ routeContent = $ route ; } else { $ routeContent = $ route [ 'function' ] ; } // Registro los parametros pasados en la solicitud Request :: register ( ) ; } else { // Se remueve el ultimo slash ya que rutas complejas no lo requieren //$route = self::remove_slash($route); if ( ! $ this -> loadParamsRoute ( $ route , $ routeContent ) ) { $ routeContent = null ; } } // Agrega las cabeceras a la respuesta de existir $ this -> setHeadersToResponse ( ) ; /*
         * Almacena el nombre de la ruta actual si es que lo tiene, dependiendo
         * si es una ruta normal o compleja y si es funcion o vista.
         */ if ( is_array ( $ route ) ) { $ this -> nameForRoute = $ route [ 'name' ] ; } elseif ( is_array ( $ routeContent ) ) { $ this -> nameForRoute = $ routeContent [ 'name' ] ; } /*
         * NOTA: Los decoradores solo pueden ser utilizados en rutas con vistas
         *       no en rutas con funciones anonimas.
         */ if ( is_array ( $ routeContent ) ) { if ( $ appName == null ) { $ appName = $ routeContent [ 'app' ] ; } // Primero se verifica que la aplicacion este agregada en la configuracion $ app = App :: getInstance ( ) ; if ( $ app -> exists ( $ appName ) ) { $ app -> load ( $ appName ) ; // Cargo el autoload.php, archivo opcional $ autoloadPath = APPS_ROOT . DS . 'autoload.php' ; if ( Storage :: exists ( $ autoloadPath ) ) { include_once $ autoloadPath ; } // Ejecuta los decoradores de la ruta si es que hay $ middlewares = $ routeContent [ 'middlewares' ] ; if ( ! is_null ( $ middlewares ) ) { foreach ( $ middlewares as $ middleware ) { $ returnValue = $ app -> getMiddleware ( $ middleware ) ; // Valida si el decorador retorna un Response if ( $ returnValue instanceof \ ForeverPHP \ Http \ ResponseInterface ) { $ app -> run ( $ returnValue ) ; } } } $ app -> run ( $ routeContent ) ; } else { throw new AppException ( "La aplicación ($appName) a la que pertenece la vista no esta "  "cargada en settings.php." ) ; } } elseif ( is_callable ( $ routeContent ) ) { $ this -> runFunction ( $ routeContent ) ; } else { $ this -> notView ( ) ; } }
Ejecuta la ruta solicitada
Ejecuta la ruta solicitada