Crear la estructura de la aplicación web en PHP

Todas las aplicaciones web realizadas según el patrón MVC, deben cumplir con una estructuración prefijada.

Comenzaremos creando tres nuevas carpetas dentro de la carpeta pública del servidor con el nombre controller, model y view.

Por lo general, cada sección de la web contará con un script PHP en cada una de las capas con el nombre de la sección. Casa script se encargará de las acciones de la sección específicas para la capa en la que está ubicado.

Tenemos una web con las secciones noticias y productos.

Para crear las secciones generaremos los siguientes scripts:

  • controller/noticias.php
  • controller/productos.php
  • model/noticias.php
  • model/productos.php
  • view/noticias.php
  • view/productos.php

Tal y como hemos visto en el ciclo de vida del patrón MVC, el usuario realiza la petición directamente al controlador. Sin embargo, el controlador se encuentra siempre dentro de la carpeta controller, lo cual hace que la URL solicitada por el usuario no coincida con la estructura de directorios del servidor.

Siempre que la URL que el usuario debe solicitar no coincida con la estructura de carpetas del servidor, debemos utilizar la reescritura de URLs para ajustarlo.

Reescritura de URLs

Para configurar la reescritura de URLs del servidor, debemos utilizar el módulo mod_rewrite de Apache.

Utilizaremos un archivo .htaccess para establecer las directivas de mod_rewrite de forma que todas las URLs pasen por un único script que las controle. El contenido de .htaccess debe ser el siguiente:

El script que controla las peticiones, obtendrá la URL que le está llamando de .

NOTA: Hemos añadido una línea adicional a nuestro .htaccess que evita que las URLs que contengan archivos de recursos (imágenes, hojas de estilos, scripts de javascript...) sean reescritas y procesadas por el script de PHP. 

Mediante la reescritura de URLs, haremos que todas las URLs que el usuario nos envía sean procesadas por el script index.php que ubicaremos en la raíz de la carpeta pública del servidor.

Este script analizará la URL que el usuario ha utilizado y llamará al controlador de la sección correspondiente mediante un include