Crear la estructura de la aplicación web en PHP
Las aplicaciones web desarrolladas bajo el patrón MVC deben mantener una estructura organizada y coherente que respete la separación de capas.
Estructura básica de directorios
Comenzaremos creando tres carpetas dentro del directorio público del servidor:
Cada una de estas carpetas almacenará los scripts correspondientes a su capa:
- controller/: contiene los scripts de los controladores (gestión de solicitudes y lógica de negocio).
- model/: contiene los scripts del modelo (gestión y acceso a datos).
- view/: contiene los scripts de la vista (generación del HTML u otras presentaciones).
Por lo general, cada sección funcional de la aplicación contará con un script en cada una de las capas, identificado con el nombre de la sección.
jemplo de estructura para una web con secciones
controller/noticias.php
controller/productos.php
model/noticias.php
model/productos.php
view/noticias.php
view/productos.php
Reescritura de URLs
Tal como vimos en el ciclo de vida del patrón MVC, el usuario realiza la petición al controlador. Sin embargo, como el controlador reside dentro de la carpeta /controller
, las URLs amigables no coinciden directamente con la estructura de carpetas del servidor.
Para solucionar esto, debemos implementar reescritura de URLs usando el módulo mod_rewrite
de Apache. Esto permite interceptar todas las URLs y redirigirlas a un único script que actúe como controlador frontal.
Ejemplo de archivo .htaccess:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !\.(jpg|css|js|gif|png)$ [NC]
RewriteRule ^(.*)$ index.php?pantalla= [QSA]
RewriteCond
: evita que se reescriban peticiones a archivos estáticos como imágenes o scripts.
RewriteRule
: redirige todas las demás peticiones a index.php
, pasando la URL original como parámetro pantalla
.
Este patrón también es compatible con servidores modernos como NGINX, aunque la sintaxis de configuración sería distinta.
Script controlador principal
Ubicaremos el archivo index.php
en la raíz de la carpeta pública. Este script analizará la URL solicitada por el usuario, identificará el controlador correspondiente y lo incluirá mediante una instrucción como:
include 'controller/' . $_GET['pantalla'] . '.php';
Recomendación de seguridad: valida siempre el valor recibido en $_GET['pantalla']
para evitar vulnerabilidades como inclusión de archivos.