src/ForeverPHP/Routing/Router.php
public function add(string $route, string $view, $middlewares = null)
    {
        $app = null;        // Aplicacion donde esta la vista
        $v = null;          // Vista a buscar
        $method = 'run';  // Metodo por defecto a ejecutar

        // Se valida si es una vista a ejecutar o una funcion anonima
        if (is_string($view)) {
            if (!strpos($view, '@')) {
                throw new RouterException("Revise la ruta ($route) al parecer la ruta a la vista no esta correctamente escrita.");
            }

            // Dividir la vista en app, vista y funcion si es que esta definida
            $view = explode('@', $view);
            $app = $view[0];
            $v = $view[1];

            // Valida si la vista trae un metodo a ejecutar
            if (count($view) == 3) {
                $method = $view[2];
            }
        } elseif (is_array($view)) {
            /*
             * Definicion de una vista con matriz.
             *
             * $view = array(
             *     'name' => 'nombre_vista',
             *     'app.vista' o 'view' => 'app.view.function' o function() {}
             * );
             */

            // Si el numero de items de la matriz es menor a dos no es valido
            if (count($view) < 2) {
                throw new RouterException('Definición de vista invalida.');
            }

            if (!array_key_exists('name', $view)) {
                throw new RouterException("No existe el atributo 'name' de la vista en la matriz.");
            }

            /*
             * Almacena temporalmente el nombre de la ruta para que al volver a
             * llamar a add se agregue el nombre a la ruta.
             */
            $this->nameForRoute = $view['name'];

            // Vuelve a llamar a add para agregar la ruta
            return $this->add($route, $view[0], $middlewares);
        } else {
            $method = $view;
        }

        // Se valida si la ruta trae parametros por ruta
        $paramsUrl = array();
        $route = $this->parseRoute($route, $paramsUrl);

        // Matriz con el contenido de la ruta
        $routeContent = array(
            'app' => $app,
            'view' => $v,
            'method' => $method,
            'paramsUrl' => $paramsUrl,
            'name' => $this->nameForRoute,
            'middlewares' => $middlewares
        );

        // Valida si es ruta normal o compleja
        if (count($paramsUrl) == 0) {
            $this->routes[$route] = $routeContent;
        } else {
            $this->complexRoutes[$route] = $routeContent;
        }
    }
public function add(string $route, string $view, $middlewares = null)
    {
        $app = null;        // Aplicacion donde esta la vista
        $v = null;          // Vista a buscar
        $method = 'run';  // Metodo por defecto a ejecutar

        // Se valida si es una vista a ejecutar o una funcion anonima
        if (is_string($view)) {
            if (!strpos($view, '@')) {
                throw new RouterException("Revise la ruta ($route) al parecer la ruta a la vista no esta correctamente escrita.");
            }

            // Dividir la vista en app, vista y funcion si es que esta definida
            $view = explode('@', $view);
            $app = $view[0];
            $v = $view[1];

            // Valida si la vista trae un metodo a ejecutar
            if (count($view) == 3) {
                $method = $view[2];
            }
        } elseif (is_array($view)) {
            /*
             * Definicion de una vista con matriz.
             *
             * $view = array(
             *     'name' => 'nombre_vista',
             *     'app.vista' o 'view' => 'app.view.function' o function() {}
             * );
             */

            // Si el numero de items de la matriz es menor a dos no es valido
            if (count($view) < 2) {
                throw new RouterException('Definición de vista invalida.');
            }

            if (!array_key_exists('name', $view)) {
                throw new RouterException("No existe el atributo 'name' de la vista en la matriz.");
            }

            /*
             * Almacena temporalmente el nombre de la ruta para que al volver a
             * llamar a add se agregue el nombre a la ruta.
             */
            $this->nameForRoute = $view['name'];

            // Vuelve a llamar a add para agregar la ruta
            return $this->add($route, $view[0], $middlewares);
        } else {
            $method = $view;
        }

        // Se valida si la ruta trae parametros por ruta
        $paramsUrl = array();
        $route = $this->parseRoute($route, $paramsUrl);

        // Matriz con el contenido de la ruta
        $routeContent = array(
            'app' => $app,
            'view' => $v,
            'method' => $method,
            'paramsUrl' => $paramsUrl,
            'name' => $this->nameForRoute,
            'middlewares' => $middlewares
        );

        // Valida si es ruta normal o compleja
        if (count($paramsUrl) == 0) {
            $this->routes[$route] = $routeContent;
        } else {
            $this->complexRoutes[$route] = $routeContent;
        }
    }
public function add ( string $ route , string $ view , $ middlewares = null ) { $ app = null ; // Aplicacion donde esta la vista $ v = null ; // Vista a buscar $ method = 'run' ; // Metodo por defecto a ejecutar // Se valida si es una vista a ejecutar o una funcion anonima if ( is_string ( $ view ) ) { if ( ! strpos ( $ view , '@' ) ) { throw new RouterException ( "Revise la ruta ($route) al parecer la ruta a la vista no esta correctamente escrita." ) ; } // Dividir la vista en app, vista y funcion si es que esta definida $ view = explode ( '@' , $ view ) ; $ app = $ view [ 0 ] ; $ v = $ view [ 1 ] ; // Valida si la vista trae un metodo a ejecutar if ( count ( $ view ) == 3 ) { $ method = $ view [ 2 ] ; } } elseif ( is_array ( $ view ) ) { /*
             * Definicion de una vista con matriz.
             *
             * $view = array(
             *     'name' => 'nombre_vista',
             *     'app.vista' o 'view' => 'app.view.function' o function() {}
             * );
             */ // Si el numero de items de la matriz es menor a dos no es valido if ( count ( $ view ) < 2 ) { throw new RouterException ( 'Definición de vista invalida.') ; } if ( ! array_key_exists ( 'name' , $ view ) ) { throw new RouterException ( "No existe el atributo 'name' de la vista en la matriz." ) ; } /*
             * Almacena temporalmente el nombre de la ruta para que al volver a
             * llamar a add se agregue el nombre a la ruta.
             */ $ this -> nameForRoute = $ view [ 'name' ] ; // Vuelve a llamar a add para agregar la ruta return $ this -> add ( $ route , $ view [ 0 ] , $ middlewares ) ; } else { $ method = $ view ; } // Se valida si la ruta trae parametros por ruta $ paramsUrl = array ( ) ; $ route = $ this -> parseRoute ( $ route , $ paramsUrl ) ; // Matriz con el contenido de la ruta $ routeContent = array ( 'app' => $ app , 'view' => $ v , 'method' => $ method , 'paramsUrl' => $ paramsUrl , 'name' => $ this -> nameForRoute , 'middlewares' => $ middlewares ) ; // Valida si es ruta normal o compleja if ( count ( $ paramsUrl ) == 0 ) { $ this -> routes [ $ route ] = $ routeContent ; } else { $ this -> complexRoutes [ $ route ] = $ routeContent ; } }
/*
ESTA FUNCION QUEDARA OBSOLETA SIENDO REEMPLAZADA POR get, post, ENTRE OTRAS, ESTA FUNCIONA AUN NO SE ELIMINARA
POR TEMAS DE COMPATIBILIDAD PERO SE MODIFICARA, Y ESTA SEGUN EL METODO DE LLAMADA DE LA RUTA LLAMARA A LA FUNCION
get, post, etc SEGUN SEA NECESARIO
/ * ESTA FUNCION QUEDARA OBSOLETA SIENDO REEMPLAZADA POR get post ENTRE OTRAS ESTA FUNCIONA AUN NO SE ELIMINARA POR TEMAS DE COMPATIBILIDAD PERO SE MODIFICARA Y ESTA SEGUN EL METODO DE LLAMADA DE LA RUTA LLAMARA A LA FUNCION get post etc SEGUN SEA NECESARIO