Hola, actualmente mi router.php consiste en parsear la ruta desde el constructor y separar el controlador, método y argumentos en variables. Luego llamo directamente a los archivos y métodos respectivamente, pero he visto que es una forma vulnerable a ataques y tampoco funciona para lo que necesito.
Mi planteamiento para el router era el siguiente:
1.- Creo un método para añadir las rutas a un array:
$router->add('/account/signup', array('controller' => 'account', 'action' => 'signup');
$router->add('/account/signin', array('controller' => 'account', 'action' => 'signin');
2.- Al acceder a la aplicación en el constructor parseo la ruta actual y guardo el nombre del controlador, el método y los argumentos en una variable.
3.- Llamo a otro método que comprueba si existe el controlador en el array, si existe incluye el controlador y llama al método.
El problema es que necesito que se pueda acceder al perfil de usuario de este modo http://www.pagina.com/usuario y no se muy bien como hacer eso.
¿Quizás añadiendo otra ruta al final con /* y si no ha coincidido con ninguna de las rutas anteriores que llame a ese controlador?
$router->add('/*', array('controller' => 'profile', 'action' => 'index');
Estoy bastante liado porque veo bastantes opciones pero ninguna que me resuelva el problema del nombre de usuario en la url sin que sea un controlador