Contenido del curso

Clase SessionManager para mensajes flash en PHP

Resumen

Centralizar errores y mensajes en una sola clase es una de esas decisiones que cambian la forma en que tu aplicación se comunica con el usuario. Con un Session Manager en PHP logras guardar, recuperar y borrar mensajes temporales sin repetir lógica en cada controlador o validación.

Por qué centralizar errores en una clase de sesiones

Cuando un mensaje de error vive disperso entre la validación, la vista y el controlador, mantenerlo se vuelve un dolor de cabeza. La solución es construir una clase única que administre todo el flujo de sesiones desde un mismo punto.

La idea base es sencilla: si la validación detecta un error, lo guardas en sesión, y la vista lo lee cuando renderiza el formulario. Así centralizas el acceso y reduces el acoplamiento entre capas.

¿Qué hace un Session Manager? Es una clase que encapsula la lógica de guardar y recuperar valores en $_SESSION, evitando que escribas la misma sintaxis repetida por toda la aplicación.

Cómo construir los métodos set y get del Session Manager

El primer paso es declarar la clase dentro del namespace Framework y nombrarla SessionManager [01:00]. Desde ahí defines dos métodos base que serán el corazón del sistema.

  • set(key, value): recibe una clave y un valor, y los guarda en $_SESSION[$key]. Es la misma sintaxis que ya usas en autenticación, solo que ahora vive en un único lugar.
  • get(key, default = null): recibe la clave y un valor por defecto. Si la clave existe, retorna el valor; si no, devuelve el default que pases o null.

Esta dupla es la base. Todo lo demás se apoya en ella para no duplicar código.

Cómo funcionan los mensajes flash en sesiones

Un mensaje flash es aquel que aparece una vez y desaparece al recargar la página. Piensa en el típico aviso de "formulario enviado con éxito" que ves una sola vez. Ese comportamiento lo logras con dos métodos extra.

  • setFlash(key, value): reutiliza el método set pero antepone el prefijo flash_ al key. Por ejemplo, si guardas errores, la clave real será flash_errores [02:30].
  • getFlash(key, default): recupera el valor con el prefijo flash_, y si no es null, lo elimina inmediatamente. Devuelve lo que guardaste antes de borrarlo.

Ese pequeño truco de prefijo más borrado posterior es lo que da la sensación de mensaje temporal. La próxima vez que actualices, ya no estará.

¿Por qué usar el prefijo flash_? Para distinguir rápidamente los datos temporales de los permanentes dentro de la sesión. Así puedes recorrer o limpiar solo los flash sin tocar los datos de autenticación.

Cómo integrar el Session Manager en la validación

Una vez tienes la clase lista, el uso es directo. En la clase de validación, justo antes de redirigir al usuario, instancias el SessionManager y llamas a setFlash('errores', $errores) [03:30].

Para depurar lo que estás guardando, puedes apoyarte en la función var_dump sobre $_SESSION y luego un die para detener la ejecución. Al revisar el navegador verás algo así:

php $session = new SessionManager(); $session->setFlash('errores', $errores);

En pantalla aparecerá el usuario autenticado junto con un campo flash_errores que contiene los mensajes: el título es obligatorio, la URL es obligatoria, la descripción es obligatoria. Esa es la confirmación de que el sistema está guardando correctamente.

Qué sigue después de guardar los errores

Guardar es solo la mitad del trabajo. El siguiente paso es recuperar esos mensajes desde la vista para imprimirlos junto a cada campo del formulario. Ahí es donde getFlash cobra sentido: lees el valor, se borra solo, y si el usuario recarga la página, el error desaparece.

Con esta arquitectura ya tienes una base sólida para manejar notificaciones, errores de validación y mensajes de éxito sin ensuciar tus controladores.

¿Te animas a recuperar estos errores y mostrarlos directamente en el formulario? Cuéntame en los comentarios cómo resolverías la lectura desde la vista.