Pasar de archivos sueltos a controladores en PHP es el salto que separa un proyecto improvisado de uno con arquitectura profesional. Aquí aprenderás a reorganizar tu código en clases y métodos, replicando la lógica que usan frameworks como Laravel o Symfony, para que tu aplicación sea mantenible y escalable.
¿Por qué reemplazar archivos sueltos por controladores?
Cuando trabajas con archivos sueltos, cada archivo PHP vive por su cuenta y no comparte una estructura común. Eso funciona en proyectos diminutos, pero se rompe en cuanto crece la lógica.
La solución es agrupar la lógica en clases llamadas controladores. Cada controlador concentra las acciones relacionadas con una entidad: vistas, formularios, validaciones y persistencia.
¿Qué es un controlador en PHP? Es una clase que agrupa métodos relacionados con una misma entidad (por ejemplo, enlaces o publicaciones) y separa la lógica para que el código sea más legible y profesional.
¿Cómo renombrar tus archivos para crear controladores?
El primer paso es darle a cada archivo un nombre que comunique su propósito. En lugar de archivos genéricos, conviertes cada uno en un controlador con responsabilidad clara [01:00].
- AboutController para la página de información.
- HomeController para la página principal.
- LinkController para gestionar los enlaces.
- PostController para las publicaciones del blog.
Este patrón de nomenclatura no es decorativo: es la convención que usan frameworks modernos y permite que cualquier desarrollador entienda la intención del archivo con solo leer su nombre.
¿Cómo defines una clase con métodos dentro de un controlador?
Dentro de cada archivo, declaras una clase y, dentro de ella, los métodos que responden a cada acción. Cada método encapsula una lógica específica.
Por ejemplo, en AboutController defines class AboutController y dentro creas el método index() con sus llaves. Toda la lógica que antes vivía suelta en el archivo ahora se mueve dentro de ese método [02:00].
La estructura queda así:
- Archivo: LinkController.php.
- Clase:
class LinkController.
- Métodos:
index(), create(), store().
Cada método representa una acción del usuario y se comunica con la vista correspondiente.
¿Cómo organizas los métodos index, create y show?
La convención es asignar un método por intención. No es un capricho: cada nombre describe qué hace ese fragmento de código.
index(): muestra el listado de registros, como todos los enlaces disponibles.
create(): devuelve el formulario para crear un nuevo registro.
store(): persiste los datos enviados desde el formulario.
show(): muestra un registro específico, útil para una publicación individual.
¿Cuándo uso show en lugar de index? Usa show() cuando muestras un solo registro (una publicación específica) y index() cuando listas todos los registros (todas las publicaciones del blog).
En PostController, por ejemplo, el método show reemplaza al index cuando solo quieres mostrar una publicación, mientras que el módulo BlogController sí debe implementar index para listar todas las entradas [04:30].
¿Cómo instancias el objeto de base de datos dentro del método?
Al mover la lógica dentro de una clase, necesitas crear el objeto de base de datos dentro de cada método que lo requiera. Esto respeta el ámbito o scope de la clase y evita depender de variables globales.
Dentro del método, instancias el objeto, ejecutas la consulta y pasas los datos a la vista. El flujo queda limpio: una entrada, una salida, una responsabilidad.
¿Cómo se conecta la lógica de validación con el método store?
La lógica completa para crear un enlace funciona así:
- El usuario visita el método
index y ve todos los enlaces.
- Hace clic en crear y el método
create le muestra el formulario.
- Al enviar el formulario, se ejecuta
store, que valida los datos.
- Si la validación pasa, se crea el registro en la base de datos.
- Si la validación falla, se muestran los errores en la vista del formulario [05:30].
Esta separación de responsabilidades es exactamente lo que hace un framework por debajo. Tú lo estás construyendo a mano, lo que te da una comprensión real de cómo funciona la arquitectura.
¿Qué viene después de crear los controladores?
Al terminar este paso, tu proyecto exige una nueva estructura a nivel de rutas. Las rutas son las que conectan una URL con un método específico de un controlador, y son el siguiente eslabón natural.
Mientras tanto, tu reto es completar el módulo BlogController y definir ahí toda la lógica de las publicaciones siguiendo el mismo patrón de clase con métodos.
¿Ya identificaste qué métodos vas a incluir en tu BlogController? Cuéntame en los comentarios cómo estás organizando tu estructura.