Clase Router

Es quizas la clase mas importante del sistema y es la que dirige toda la operativa de la libreria. Arranca al finalizar el index y se mantiene activa hasta el termino de la ejecucion.
Desde nuestra clase adaptadora podemos acceder a ella de la siguiene manera:
$this->_router

Si necesitamos acceder de otra parte que no sea el adaptador, como implementa el patron Singleton, para que solo exista una instancia de la misma en la ejecucion, podemos obtener su instancia de la siguiente manera:
\agenor\mva\Router::getInstance()

Veamos que posibilidades nos otroga.

Metodos disponibles al usuario
getEntorno(void) : string
Nos retorna el valor de la variable de entorno, es equivalente a utilizar la constante APPLICATION_ENV.

loadConfig(string $rutaConfig, string $config) : void
$rutaConfig : ruta o directorio donde se encuentra el archivo a cargar.
$config : Nombre del archivo a cargar, sin la extencion.
El sistema por defecto para cada modulo carga todos los archivos que se encuentran en el direcorio definido por DIR_CONFIGS (configs), por lo cual si algun archivo de configuracion por alguna razon no se encuentra aqui y quisieramos cargarlo, podremos realizarlo con este metodo.
Es importante recordar que el mismo quedara cargado en el Registry con el nombre del archivo sin la extencion.

getRequest(void) : \agenor\mva\Request
Retorna la instancia del Request de la Aplicacion.

changeAction(string $accion, string $adaptador = '') : void
$accion : Accion a la que se quiere redirigir que deberia ser distinta a la accion en ejecucion.
$adaptador : Adaptador al que se quiere redirigir debe ser del modulo en ejecucion y en caso de omitir este parametro se presume que es el mismo que se esta ejecutando.
Este metodo cambia en tiempo de ejecucion el adaptador y accion que se ejecutara.

Atencion: si se ejecuta este metodo, que es directo sobre el Router, si se desea la plantilla del nuevo metodo se debera realizar $view->renderChange('plantilla'), no seria necesario si es ejecutado desde el metodo desde el adaptador ($this->changeAction()).


newHttp(string $accion, string $adaptador = '', string $modulo = '', string $peticionNew = '') : void
Realiza en tiempo de ejecucion un nuevo pedido http, es como si cambiaramos la url en la barra de direcciones y dieramos enter.
$accion : accion que se quiere ejecutar.
$adaptador : Adaptador a ejecutar.
$modulo : Modulo que se quiere ejecutar.
$peticionNew : parametros a pasar por url, si no se establece nada, se pasan los de la peticion anterior.

setPlugins(string $plugin, string $moment = 'PRE', integer $index = 0) : void
Configura los plugins que se ejecutaran, son porciones de codigo que no pertenecen a ningun modulo y no requieren archivos de configuracion, en caso de requerirlos deberan hacerce cargo ellos mismos de levantar los recursos necesarios. Si las porciones de codigo estan relacionados a un modulo y usan la configuracion de estos se deberia utilizar los widgets de la clase View.
$plugin : Nombre del plugin.
$moment : Momento en que se ejecutara el plugins, PRE antes del controlador o POST, una vez que el controlador finalizo su tarea.
$index : establece el orden de ejecucion de los plugins del sistema.

Para el final dejamos el metodo mas importante:
run(\agenor\mva\RequestInterface $request, Array $config = array()) : void
Este metodo es el que arranca la ejecucion del sistema, el cual vimos en Ejecutando Agenor.