Introducción
Prerequisitos
Para seguir esta guía únicamente necesitarás conocimientos básicos/medios de PHP y motivación para aprender. Si todavía no dispones de estos conocimientos, puedes utilizar el material gratuito disponible en http://jonvadillo.com/learn para comenzar tu aprendizaje.
Consejo
Cualquier editor de texto te servirá también para programar. No obstante, te recomiendo VS Code o PhpStorm, los cuales considero sin duda alguna dos de los editores para PHP más potentes en la actualidad.
¿Qué es Laravel?
Tal y como dice la guía oficial, Laravel es un framework de desarrollo de aplicaciones web con una sintaxis elegante que nos permitirá desarrollar aplicaciones web de forma rápida y segura.
El objetivo de Laravel es permitir a los desarrolladores crear aplicaciones web robustas y profesionales, de forma ágil y con una estructura adecuada. Laravel facilita la implentación de cualquier funcionalidad que toda aplicación profesional pueda necesitar (interacción con bases de datos, seguridad, servicios web, etc.).
En este libro aprenderás a crear aplicaciones web con Laravel desde cero, desde lo más básico hasta funcionalidades más complejas que incluyan aspectos como la seguridad o control de acceso.
Características principales
Algunas de las características de Laravel son:
- Sistema intuitivo de rutas.
- Motor de plantillas Blade para la generación de interfaces de usuario de forma flexible.
- Soporte para cualquier base de datos mediante Eloquent ORM.
- Uso de la arquitectura MVC.
- Dispone de multitud de componentes capaces de resolver las problemáticas más comunes del desarrollo de aplicaciones web.
- Una grande comunidad de desarrolladores y expertos.
Ecosistema Laravel
Es importante conocer bien los actores principales del ecosistema Laravel:
- Router: recibe todas las peticiones y las envía al controlador adecuado (también puede ejecutar algún middleware específico antes de llamar al controlador).
- Controladores (Controllers): contienen toda la lógica para reaccionar a las peticiones entrantes.
- Vistas (Views): contienen el código HTML y separan la presentación de la lógica de la aplicación (controlador).
- Modelos (Models): se utilizan para interactuar con la base de datos y aplicar la lógica de negocio.

Tal y como muestra la imagen anterior, el flujo de una petición en una aplicación de Laravel sería el siguiente:
- El punto de entrada de todas las peticiones es el archivo
public/index.phpel cual se encargará de lanzar una instancia de nuestra aplicación Laravel. - La petición se envía al router, el cual la reenvía al controlador correspondiente.
- El controlador atiende la petición y realiza las acciones correspondientes (por ejemplo, puede interactuar con la base de datos para cargar o almacenar información).
- Por último, el controlador genera la vista correspondiente y se la envía al cliente.
Estructura de carpetas
Laravel crea una estructura de ficheros como punto de partida para todo tipo de aplicaciones:
/app: contienne el código fuente de la aplicación y la mayoría de las clases que crearemos. Importante comentar las carpeta/app/Httpque almacenará los controladores de la aplicación que vayamos creando./bootstrap: contiene el archivoapp.php, el cual arranca el framework. También contiene la carpeta/cacheen la que Laravel almacena los archivos generados y así optimizar su rendimiento./config: contiene la configuración de la aplicación, de la conexión a base de datos, sistema de ficheros, etc. A pesar de ello, es conveniente realizar los cambios de configuración en el archivo .ENV y no en los archivos de configuración de esta carpeta./database: contiene todos los ficheros relacionados con el almacenamiento de datos.public: contiene el ficheroindex.php, el cual será el punto de entrada a nuestra aplicación, es decir, recibirá todas las peticiones que reciba nuestra aplicación./publices el único directorio accesible públicamente, por lo que contiene todos los archivos estáticos: .js, .css y las imágenes./resources: contiene las vistas de la aplicación que se utilizarán para generar los ficheros HTML y los archivos CSS y JS no compilados (una vez compilados Laravel los guardará en la carpeta/public). También contiene los archivos de traducción./routes: contiene los archivos de rutas a nuestra aplicación o API. La diferencia entre estos dos, es que el segundo no contiene información sobre las sesiones, cookies, etc./storage: contiene las vistas compiladas y otros archivos generados por laravel. La carpetastorage\app\publicse utilizará para almacenar los archivos subidos por nuestros usuarios (por ejemplo, fotos de perfil).