Implementar el patrón Front Controller es esencial cuando se busca centralizar y optimizar la estructura de navegación en un proyecto PHP. Mediante este sistema, se maneja todo el acceso al proyecto desde un único punto, aumentando seguridad y simplificando la gestión del código fuente.
¿Qué es el patrón Front Controller y por qué implementarlo?
El patrón front controller se utiliza para centralizar todas las solicitudes y manejarlas desde un solo archivo. Este enfoque:
Incrementa la seguridad al limitar el acceso directo a archivos importantes.
Facilita la organización de rutas en el proyecto.
Simplifica futuras modificaciones y el mantenimiento del código.
Al emplear un sistema basado en un único punto de entrada como index.php, el desarrollador maneja mejor la lógica del proyecto.
¿Cómo establecer rutas centralizadas en PHP?
Las rutas centralizadas permiten administrar fácilmente las URL del proyecto. El procedimiento es:
Crear un archivo específico (web.php), almacenado en una carpeta propia (rutas).
Utilizar un arreglo para almacenar y gestionar todas las rutas disponibles.
Vincular claramente cada URL a su controlador correspondiente mediante este arreglo:
Esta práctica permite manejar fácilmente errores o cambios en la navegación.
¿Qué pasos seguir para proteger el proyecto con una carpeta public?
Para asegurar que los archivos vitales no sean accesibles directamente desde el navegador:
Ubicar el archivo index.php en una carpeta específica y pública (denominada comúnmente como public).
Mantener el resto del código, rutas y controladores, en directorios externos, inaccesibles directamente.
Esta configuración evita que usuarios externos puedan acceder directamente a archivos sensibles como las rutas definidas en web.php. Además, protege los archivos fuente y facilita el escalar el proyecto posteriormente.
¿Cómo ajustar las rutas relativas?
Al reorganizar tu proyecto con el patrón front controller y una carpeta pública, es fundamental ajustar las rutas relativas. Por ejemplo:
Si tratas de acceder a recursos almacenados fuera de la carpeta pública, la ruta debe indicar claramente el movimiento hacia atrás en la estructura del proyecto:
// ejemplo de ruta hacia atrásrequire'../../recursos/home.php';
Este detalle asegura que el proyecto funcione de forma continua y correcta tras la reorganización.
¿Quieres aplicarlo en tu blog? Comparte tu experiencia o cualquier duda en los comentarios.
Ahora si que entiendo mejor como trabajan las rutas :D
Si usan wsl con ubuntu y quieren servir el archivo index.php desde public/ pueden hacer este comando:
php -S localhost:8000 -t public/
Solo deben tener instalado php, si no lo tienen instalado pueden hacerlo con:
sudo apt update
sudo apt install php
agracias Oscar... me sirvió de mucho, no sabía porque no funcionaba
Los que usan APACHE, importante generar el .htaccess con el siguiente contenido:
RewriteEngine On
# Si el archivo o directorio existe físicamente, lo sirve directamente
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Redirige todo lo demás al index.php
RewriteRule ^(.*)$ index.php [QSA,L]
Si usas laragon, es mucho mas facil, solo tendrias que usar el virtualhost que te lo crea y ademas hacer la configuracion del archivo .conf para que apunte al public de tu proyecto :)
Si estan usando Linux pueden usar ddev, es bastante facil de instalar (https://ddev.readthedocs.io/en/stable/) y permite configurar cual va a ser el root folder:
Si no tienen la carpeta public les recomienda usar la raíz del proyecto: