Patrón Front Controller en PHP: Centraliza Acceso Web
Resumen
¿Qué es el Front Controller?
El concepto de Front Controller es un patrón de diseño que soluciona el problema del acceso único a un sistema web. Históricamente, cada página de un sitio web, como index.php, contactos.php, o servicios.php, funcionaban como accesos individuales. Este patrón permite que todas las solicitudes pasen a través de un único punto de entrada, conocido como el archivo index.php. Esto es esencial para frameworks modernos que usan sistemas de rutas y peticiones centralizadas, optimizando así la organización y mantenimiento del código.
¿Cómo funciona el Front Controller en la práctica?
En la implementación del Front Controller, el archivo index.php se configura para ser el único punto de entrada al sistema web. Esto se logra requiriendo el sistema de autocarga de clases, comúnmente configurado mediante Composer con autoload.php. Aquí se utilizan rutas absolutas gracias al uso de __DIR__, que permite especificar caminos desde la raíz del directorio, eliminando la problemática de las rutas relativas.
require__DIR__.'/../vendor/autoload.php';
¿Por qué es importante esta centralización? Porque permite una gestión más efectiva de los componentes comunes del sitio, como cabeceras, pie de página o menús de navegación, evitando el uso excesivo de includes dispersos en múltiples archivos.
¿Qué sucede cuando un usuario accede al sistema?
Al acceder, se crea una solicitud HTTP que se gestiona a través de una clase específica (aún por definir). Esta clase ejecuta un método enviar que procesa la solicitud y genera una respuesta adecuada. La solicitud se realiza a la clase Request, que se registra y carga mediante Composer:
$request=newHttpRequest();$request->enviar();
El objetivo de esta configuración es asegurarse de que al recibir una petición, el sistema la procese correctamente a través del front controller y ofrezca una respuesta precisa al usuario.
Recomendaciones para implementar el patrón Front Controller
Utiliza Rutas Absolutas: Garantiza que los caminos a los archivos sean correctos y no dependan de la estructura del directorio local.
Centraliza las Soluciones Comunes: Agrupa elementos compartidos como header y footer para facilitar el mantenimiento.
Simplifica la Autocarga de Clases: Usa herramientas como Composer para manejar dependencias y carga automática de clases.
Evalúa la Estructura de tu Proyecto: Adapta la estructura para aprovechar al máximo el Front Controller, asegurando que todas las rutas y peticiones pasen por el índice.
¡No olvides realizar el ejercicio práctico y compartir tus resultados! Este proceso no sólo mejorará la organización de tu código, sino que también perfeccionará tu comprensión sobre cómo operan los frameworks modernos. Continúa explorando y aplicando estos conceptos para fortalecer tus habilidades de desarrollo web.
Cuando recién comenzaba con PHP y no había nadie que me guiara, recuerdo que aprendí a hacer mi propio sistema de peticiones y respuestas, y todo pasaba siempre por el index.php y me sentía genial por haber descubierto una nueva forma de programar... hasta el día de hoy me vengo a dar cuenta que eso que hice se llama "Front Controller" xD
Eres un crack RetaxMaster y vas por un excelente camino. Te felicito!!!
Es impresionante hacer las cosas con intuición llevada a la práctica. Felicitaciones camarada.
Front Controller
Es un patrón que nos ayuda a solucionar el problema de acceso único en la web. Este se utiliza para proporcionar un mecanismo centralizado para manejar solicitudes, todas las solicitudes son procesadas por un solo controlador. El controlador puede realizar la autenticación / autorización / registro o solicitud de seguimiento, entonces la petición al controlador adecuado.
En este caso, vamos a lograr que todos pase a través de index.php, así centralizaremos los accesos. Además, ya no necesitaremos tener un sistema lleno de include para incluir cabeceras o footers.
📁 Cuando nos referimos a rutas absolutas quiere decir que la ruta comienza en la raíz del directorio.
Esto es todo lo que contendrá el archivo index. Este va a cargar todo lo necesario, luego va a disponer de la clase Request porque lo registramos en composer, este va a ejecutar el método enviar.
Resumen: Básicamente es centralizar todas las peticiones.
gracias por el aporte ...
front controller seria como la boca de la botella
Interesante aporte
__DIR__ es una ruta absoluta, lo que quiere decir que cominenza en la raíz y la construye completamente.```
Después de haber trabajado con Laravel y haber hecho varios proyectos en el, apenas vengo a saber que así se llamaba el patrón: Front Controller.
Muchas gracias.
Como hago para tener la ruta/URL limpia? Uso xampp y tengo que ir a localhost/Ejemplo/public/index.php si o sí.
Ya configuré el archivo .htaccess en mi carpeta de proyecto y puse lo siguiente (lo vi en comentarios):
Descargué Laragon, creé una app de Laravel por defecto desde Laragon, copié el .htaccess que venía en ese proyecto y lo pegué en el mio, ahora migrado a Laragon (me parece mejor y puedo tener una URL limpia sin tanto tramite).
Se puede usar el servidor integrado de php desde la consola con el siguient comnado
php -Slocalhost:8000-t public/
excelente!
GRACIAAAAAAS 🥰🥰🥰🥰
Sí estas usando laragon y no sabes porque entra a platzi.test y no a localhost/platzi es por la configuración de laragon, laragon automaticamente configura virtualhosts con el nombre de las carpetas que hay dentro de www . test (de hecho esto lo peudes cambiar).
Ahora para que el punto de entrada de tu app sea la carpeta public dentro de www/platzi, debes ir a la configuración de laragon, dando sengudo clic a donde dice web, luego apache, luego site-enable, luego buscas el que tieen nombre de tu carpeta te abrirar un archivo de cconfiguración, debes cambiar el parametro rootDirectory agregando al final /public/, luego guardas y reinicias el servidor, si estas usando XAMP y LAMP, deja de hacerlo, descarga laragon JAJAJA, mentira, cada quien, pero también se debe de poder mas o menos igual, solo busca la documentación.
Profe. Como levantó el servidor. He usado php 4 años, pero no he tenido que usar composer. Composer levanta el servidor?
Si tienes PHP instalado y dentro de las variables de entorno, puedes ejecutar en la consola
php -Slocalhost:8000
Frontcontroller, centralizar todas las peticiones. Se ejecutan las clases propias de la peticon.
Ojo , pongan cuando estan configurando el auto carga tiene que ser así
"App\"; "app/"
Alguien sabe por que en mi index.php cuando escribo:
var_dump(DIR . '/../vendor/autoload.php);
en la terminal me arroja un error?
Si descargas el código del curso te darás cuenta que está escrito "autolad" en vez de "autoload" lo que genera un error.
Perfect!
Para los que usan laragon y quieren entrar a la carpeta "public" sin escribirla en la url deben hacer lo siguiente:
Abrir el archivo de conf del sitio que crearon para el proyecto
Agregar "public/" al final de la variable ROOT
Front controller:
El primer paso es configurar el index para que todo pase a través de el.
Front Controller: Es un patrón que ayuda a solucionar el problema de acceso único a un sistema web.
Front Controller es un patrón de diseño o un patrón de arquitectura?
De diseño en la categoría estructural y se relaciona al desarrollo web
Porque usas DIR. Porque no usar ruta relativa. y Porque apuntaste platzi.test a tu carpeta public ? y no a la raíz de tu proyecto?
Se utiliza DIR para obtener la ruta absoluta del archivo actual. Se utiliza una ruta relativa para mayor flexibilidad y portabilidad. Se apunta a la carpeta public para que sea accesible desde el navegador y se evite exponer archivos innecesarios en la raíz del proyecto.
Entonces me das la razón con que es mejor ruta relativa