jairogarcíarincón

El archivo public/index.php


8.60K

Introducción

Por el archivo public/index.php deben pasar todas las peticiones a nuestro web, pues será el encargado de encaminar las peticiones a las acciones y vistas correspondientes mediante un sistema de toma de decisiones.

Adicionalmente, este archivo realizará el autoload o pre-carga de clases necesarias y definirá una serie de variables de sesión para su uso a lo largo de las distintas páginas.


Rutas

De este modo, este archivo debe ser capaz de enrutar las siguientes peticiones en el front-end:


  • /: Inicio o home (http://ruta-hasta-mi-directorio/index.php) con una presentación de la web y las noticias destacadas con un estilo similar a las del listado de noticias.

  • /acerca-de: Página de información de la página (autor, empresa, etc.)

  • /noticias: Listado de noticias ordenado por fecha más reciente con título, entradilla, fecha, miniatura y enlace a la noticia individual.

  • /noticia/slug-de-la-noticia: Noticia indivuidual con la noticia completa y la foto en grande.

  • cualquier-otra-ruta: Redirección a la home.


Y las siguientes para el back-end:

  • /admin: Página de inicio del panel de administración (una vez autenticado) con enlaces a las diferentes secciones en función de los permisos. Si no está autenticado, redirección a la página de acceso.

  • /admin/entrar: Página con formulario acceso al panel de administración (usuario y contraseña)

  • /admin/salir: Ruta para desconectar del panel de administración que después redireccionará a la página de acceso.


  • /admin/usuarios: Listado de usuarios ordenado alfabéticamente y con enlaces a crear, editar, activar y borrar.

  • /admin/usuarios/crear: Vista de formulario de creación de nuevo usuario con opciones de guardar y descartar.

  • /admin/usuarios/editar/id: Vista de formulario de edición de usuario con opciones de guardar y descartar.

  • /admin/usuarios/activar/id: Enlace a activar/desactivar usuario y posterior redirección a listado de usuarios con mensaje de éxito.

  • /admin/usuarios/borrar/id: Enlace a borrar usuario (previa confirmación) y posterior redirección a listado de usuarios con mensaje de éxito.


  • /admin/noticias: Listado de noticias ordenado por fecha más reciente, con miniatura y enlaces a crear, editar, activar y borrar.

  • /admin/noticias/crear: Vista de formulario de creación de nueva noticia con opciones de guardar y descartar.

  • /admin/noticias/editar/id: Vista de formulario de edición de noticia con opciones de guardar y descartar.

  • /admin/noticias/activar/id: Enlace a activar/desactivar noticia y posterior redirección a listado de noticias con mensaje de éxito.

  • /admin/noticias/home/id: Enlace a destacar o no la noticia en la home y posterior redirección a listado de noticias con mensaje de éxito.

  • /admin/noticias/borrar/id: Enlace a borrar noticia (previa confirmación) y posterior redirección a listado de noticias con mensaje de éxito.


  • /admin/cualquier-otra-ruta: Redirección a /admin.


Todas las rutas del front-end compartirán el mismo layout (head, header, nav y footer), al igual que todas las rutas del back-end, que también compartirán su propio layout.


Código

Con todo lo anterior, el código del fichero public/index.php podría ser similar al siguiente:



IMPORTANTE: En caso de usar XAMPP en Windows la línea $dirname = str_replace('/public', '', dirname(__FILE__)); se debe sustituir por $dirname = str_replace('\public', '', dirname(__FILE__));, ya que el sistema de gestión de archivos de Windows es diferente que el de Linux.

Nota: Se podrían refactorizar y simplificar las tomas de decisiones de rutas, pero se ha preferido dejarlo así para mejorar la comprensión del funcionamiento.

Puesto que de momento las clases de los controladores están vacías, de momento no podemos comprobar el funcionamiento, si bien podrías crear ya los métodos correspondientes a las acciones y hacer simples echo para comprobar que todo funciona correctamente.

En el siguiente apartado crearemos los dos helpers que vamos a necesitar, uno para la conexión con la base de datos y otro para gestionar las vistas.


Publicado el 03 de Abril de 2025

bloggestor de contenidosphpmysqlcss3javascriptjqueryajax