Laravel -como otros frameworks de PHP y otros lenguajes- usa un único punto de acceso a la aplicación llamado Front Controller, en esta lección te hablaré brevemente de cómo funciona este patrón y revisaremos el primero de los directorios que trae nuestro proyecto base de Laravel.

Repositorio

Ver el código de esta lección en GitHub

Dentro del directorio de este nuevo proyecto de Laravel, voy a ejecutar git init, git add . y git commit "first commit" con el objetivo de trabajar de forma ordenada con git.

Git es un sistema de control de versiones que nos permite ir respaldando y sincronizando nuestro trabajo sin tener que crear un centenar de directorios PROYECTO_1, PROYECTO_FINAL_2, etc. Aunque no es necesario saber Git para seguir este curso, puedes aprender Git desde cero con nuestro Curso de Git y GitHub.

Puedes descargar el proyecto a medida que va evolucionando desde su repositorio en GitHub.

A continuación voy a abrir el proyecto con mi IDE PHPStorm, sin embargo puedes desarrollar con PHP y Laravel usando editores como Visual Studio Code y muchos otros.

Lo primero que llamará tu atención es la cantidad de directorios de este nuevo proyecto. Comencemos hablando de public/.

public/, como su nombre lo indica, debe ser el directorio público de tu proyecto. Por ejemplo, si creas un virtual host debes apuntarlo a public/ en vez de al directorio raíz del proyecto. Esto es muy importante puesto que fuera de public/ habrán archivos con información sensible y código que no debe ser accedido por terceros.

Por otro lado, dentro de public/ no encontrarás todas las páginas dinámicas de tu proyecto sino un único archivo con la extensión PHP: index.php.

Este archivo es lo que se conoce como Front Controller puesto que todas las peticiones de los usuarios a tu sitio web serán redirigidas a este archivo, salvo aquellas que se realicen a otros archivos existentes en el directorio público como imágenes, archivos CSS o de JavaScript.

Esta redirección es posible gracias al servidor de HTTP Apache, su módulo mod_rewrite y el archivo .htaccess que indica que todas las peticiones a archivos o directorios no encontrados deben ser redirigidas a index.php. Otros servidores HTTP como Microsoft IIS o Nginx poseen mecanismos diferentes pero el concepto es el mismo: redirigir las peticiones a index.php donde Laravel se hará cargo del resto.

De hecho si abrimos por un momento index.php, agregamos las siguientes 2 líneas de código y guardamos:

<?php
var_dump($_SERVER);
die();

Ahora podremos ver en el navegador cómo se imprime /contactos /about-us o cualquier otra «página» que intentemos visitar y se detiene la ejecución del archivo. Si esto no funciona es muy probable que necesites habilitar el mod_rewrite de Apache. Si ya funciona no olvides quitar esas 2 líneas de código, guardar de nuevo y pasar a la siguiente lección.

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Instalación de Laravel 6 Lección siguiente Rutas básicas en Laravel 6