Contenido del curso

Clase de rutas en PHP con GET y POST

Resumen

Construir un sistema de rutas en PHP estilo framework te permite que cada controlador responda según el tipo de petición HTTP. Aquí transformas una clase de rutas estática en una estructura profesional que reconoce métodos GET y POST, almacena acciones como pares de controlador y método, y ejecuta dinámicamente el código correcto según la URI solicitada.

Cómo se estructura la propiedad que almacena las rutas

Todo arranca con una propiedad dentro de la clase que va a guardar el listado completo de rutas del proyecto. Esa propiedad se llena gracias a métodos específicos que agregan información cada vez que registras una ruta nueva.

La lógica es simple: creas un objeto, lo usas para registrar rutas con métodos como router->get() y router->post(), y finalmente disparas todo con un método run. Ese orden, crear el objeto, registrar y ejecutar, es el mismo patrón que usan frameworks como Laravel.

¿Qué guarda exactamente una ruta en este sistema? No guarda solo el nombre de un archivo. Guarda una acción completa: el método HTTP, la URI, el nombre del controlador y el nombre del método del controlador que debe ejecutarse.

Cómo reconocer el método HTTP de la petición

El siguiente paso es identificar con qué método se está enviando la petición. Esa información viene dentro de la request y la usas para filtrar dentro del arreglo de rutas registradas.

De momento trabajas con dos métodos: GET para mostrar contenido y POST para acciones que afectan la base de datos. Más adelante se suman DELETE y el de actualizar.

Una vez identificas método y URI, creas una variable accion que captura la información correspondiente desde la propiedad de rutas. Si esa acción no existe, agregas una pequeña condición:

  • Si no hay acción, la ruta no fue encontrada.
  • Devuelves un mensaje informando el método y la URI que falló.
  • Si la acción existe, ejecutas el método correspondiente.

La ejecución se desglosa en dos partes desde la variable accion: el controlador y el método. Con eso instancias la clase con new y llamas al método entre paréntesis.

Cómo se definen los métodos get y post dentro de la clase

Cuando ejecutas el sistema sin definir estos métodos, PHP te avisa que falta get. Es lógico, porque ese método es el responsable de llenar el arreglo de rutas.

El desarrollo es directo. El método espera dos parámetros:

  • Una URI, por ejemplo about.
  • Una acción compuesta por un array con el controlador y el método.

El método post sigue exactamente la misma lógica, solo cambia el nombre del método HTTP que se guarda en el arreglo. Por eso era clave recordar el nombre del método, porque ese valor se usa después para filtrar la búsqueda por URI.

¿Cómo se compone una acción dentro del arreglo de rutas? Cada acción es un array de dos posiciones: la primera es el controlador, la segunda es el método del controlador que debe ejecutarse cuando esa URI sea solicitada.

Cómo registrar una ruta POST para un formulario

El formulario de registro necesita un cambio, porque antes todo se ejecutaba en el mismo archivo y no requería ruta explícita. Ahora sí debes definirla.

En el formulario apuntas el atributo action a la URI definida, por ejemplo links/store, que coincide con la ruta POST registrada en el archivo de rutas. Al actualizar, la validación sigue funcionando igual, pero ahora con una estructura framework clara y recorrible.

Por qué conviene cargar las rutas desde el constructor

El index arranca el sistema con una sola línea: inicia el sistema de rutas. Para que esa línea funcione, necesitas un constructor en la clase que cargue las rutas automáticamente.

Dentro del constructor llamas a un método cargarRutas que recibe el archivo de rutas como valor dinámico. Esto te prepara para tener varios archivos de rutas en el futuro sin reescribir la clase.

Al cargar el archivo, surge un detalle: la variable router que se usa dentro del archivo de rutas no existe en ese contexto. La solución es asignarla dentro del método con router = $this, apuntando al propio objeto de rutas. Así, cuando el archivo externo escribe router->get(...), sabe a qué objeto referirse.

Cómo depurar el arreglo de rutas registradas

Para entender cómo se construye internamente el arreglo, una técnica útil es imprimirlo antes de ejecutar la lógica de búsqueda. Usas echo con etiquetas pre y un var_dump sobre la propiedad de rutas, y luego detienes la aplicación.

El resultado te muestra el sistema de rutas completo del proyecto:

  • Sección GET: index, acerca de, publicación, enlaces y formulario.
  • Sección POST: únicamente el registro que afecta la base de datos.
  • Cada entrada con su URI apuntando a un array de controlador y método.

Esa visualización confirma por qué la búsqueda funciona: cargas el arreglo desde el constructor y luego lo lees filtrando por método HTTP y URI dentro del run.

Con esta estructura, tu sistema dirige tráfico de forma profesional, muy parecido a cómo lo hace Laravel. ¿Cómo aplicarías esta misma lógica para sumar rutas DELETE? Cuéntame en los comentarios.