Skip to content

¿Qué es Laravel? ​

En esta lección entenderás qué es un framework, por qué Laravel se volvió el estándar para hacer aplicaciones web con PHP y cómo viaja una petición desde el navegador hasta tu código. Es la base mental que necesitas antes de escribir una sola línea.

Concepto ​

¿Qué es un framework? ​

Imagina que vas a construir una casa. Con PHP puro empiezas fabricando tus propios ladrillos, tus puertas y hasta tus tornillos. Funciona, pero tardas muchísimo y cada casa queda distinta.

Un framework es como comprar una casa prefabricada de buena calidad: los cimientos, la instalación eléctrica y las tuberías ya están hechos y probados. Tú te dedicas a lo que hace única a esa casa: la distribución, los acabados y la decoración (la lógica de negocio de tu cliente).

Laravel es un framework de PHP creado por Taylor Otwell en 2011. Hoy es el más usado del ecosistema PHP gracias a:

  • Sintaxis expresiva: el código se lee casi como una frase en inglés.
  • Baterías incluidas: rutas, ORM, plantillas, validación, autenticación, correos, colas, caché, pruebas...
  • Seguridad por defecto: protección CSRF, escape de HTML en las vistas, consultas preparadas y hash de contraseñas sin que tengas que pensarlo.
  • Comunidad enorme: tutoriales, paquetes y respuestas para casi cualquier problema.

El patrón MVC en Laravel ​

Si hiciste la lección de MVC desde cero, ya conoces la idea. Laravel la aplica así:

CapaQué haceDónde vive en Laravel
ModeloRepresenta los datos y habla con la base de datosapp/Models (Eloquent)
VistaGenera el HTML que ve el usuarioresources/views (Blade)
ControladorRecibe la petición, usa modelos y devuelve una vista o JSONapp/Http/Controllers

A eso se suman las rutas (routes/web.php), que deciden qué controlador atiende cada URL.

El ciclo de vida de una petición ​

Cuando alguien visita https://mitienda.com/productos/5, pasa esto:

txt
Navegador
   │  GET /productos/5
   ▼
public/index.php          ← único punto de entrada (front controller)
   │
   ▼
bootstrap/app.php         ← arranca la aplicación, registra middleware y rutas
   │
   ▼
Middleware                ← filtros: sesión, CSRF, ¿está logueado?...
   │
   ▼
Router (routes/web.php)   ← busca qué ruta coincide con GET /productos/5
   │
   ▼
Controlador               ← ProductoController@show(5)
   │      ├── Modelo (Eloquent) → consulta a MySQL
   │      └── Vista (Blade)     → genera HTML
   ▼
Respuesta HTTP            ← vuelve por el middleware y llega al navegador

Lo importante: todas las peticiones entran por public/index.php. Por eso, en el servidor, la carpeta pública del dominio debe apuntar a public/ y no a la raíz del proyecto (lo verás en Despliegue).

Ejemplo ​

Comparemos la misma tarea —mostrar un producto por su id— en PHP puro y en Laravel.

php
<?php
// Conexión manual a la base de datos
$pdo = new PDO('mysql:host=localhost;dbname=tienda;charset=utf8mb4', 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Leer y validar el parámetro a mano
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if (!$id) {
    http_response_code(404);
    exit('Producto no encontrado');
}

// Consulta preparada
$stmt = $pdo->prepare('SELECT * FROM productos WHERE id = ?');
$stmt->execute([$id]);
$producto = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$producto) {
    http_response_code(404);
    exit('Producto no encontrado');
}
?>
<h1><?= htmlspecialchars($producto['nombre']) ?></h1>
<p>Precio: $<?= number_format($producto['precio'], 2) ?></p>
php
<?php

use App\Models\Producto;
use Illuminate\Support\Facades\Route;

// Laravel busca el producto por id automáticamente.
// Si no existe, responde 404 solo.
Route::get('/productos/{producto}', function (Producto $producto) {
    return view('productos.show', ['producto' => $producto]);
});
blade
{{-- Las dobles llaves escapan el HTML automáticamente (anti XSS) --}}
<h1>{{ $producto->nombre }}</h1>
<p>Precio: ${{ number_format($producto->precio, 2) }}</p>

En Laravel no escribiste la conexión (está en .env), ni la consulta SQL (la hace Eloquent), ni la validación del id, ni el 404, ni el htmlspecialchars. Menos código = menos errores.

El ecosistema de Laravel ​

Laravel no es solo el framework; alrededor tiene herramientas oficiales que irás usando:

HerramientaPara qué sirve
ArtisanLa consola de comandos de Laravel (php artisan ...)
EloquentORM: trabajas con la base de datos usando objetos PHP
BladeMotor de plantillas rápido y sencillo
BreezeKit de inicio con login, registro y perfil
SanctumAutenticación para APIs y SPAs
HerdEntorno local con PHP y Nginx en un clic (Windows y macOS)
SailEntorno local con Docker
Pest / PHPUnitPruebas automatizadas
Forge / CloudServicios de pago para desplegar en servidores
Livewire / InertiaInterfaces interactivas sin (o con) un framework JS

No necesitas aprenderlas todas hoy; el curso te las presenta cuando hacen falta.

Casos de uso reales ​

  • Panel administrativo para un negocio: inventario, ventas, clientes y reportes en PDF.
  • Sistema de citas: un consultorio que agenda pacientes y envía recordatorios por correo (colas + correos).
  • API para una app móvil: Laravel sirve JSON a una app hecha en Flutter o React Native (Sanctum).
  • Tienda en línea: catálogo, carrito, pagos con Stripe o Mercado Pago.
  • SaaS: plataforma con suscripciones donde cada cliente tiene su cuenta.

Buena práctica

Aprende primero PHP puro y luego Laravel. Cuando algo "mágico" de Laravel no funcione, entender qué hay debajo (PDO, sesiones, $_POST) te permitirá depurarlo en minutos en lugar de horas.

¿Laravel 11 o 12?

Laravel 11 (marzo 2024) introdujo la estructura simplificada: sin app/Http/Kernel.php, configuración centralizada en bootstrap/app.php y menos archivos por defecto. Laravel 12 mantiene esa estructura casi sin cambios (sobre todo actualiza dependencias y kits de inicio). Todo lo que aprendas aquí aplica a ambas versiones.

Error común

Seguir tutoriales viejos (Laravel 8, 9 o 10) sin darte cuenta. Si un tutorial te dice que edites app/Http/Kernel.php o app/Providers/RouteServiceProvider.php y esos archivos no existen en tu proyecto, es porque el tutorial es anterior a Laravel 11. Busca la forma moderna: casi siempre está en bootstrap/app.php.

Ejercicios ​

  1. Explica con tus palabras qué hace public/index.php y por qué es el único archivo que debe ser accesible desde internet.
  2. Ordena correctamente estos pasos del ciclo de una petición: Controlador, Middleware, public/index.php, Router, Respuesta.
  3. Piensa en un negocio de tu ciudad (una taquería, un gimnasio, una papelería) y escribe 3 funcionalidades que podrías construirle con Laravel e indica qué parte de MVC interviene en cada una.
Ver solución
  1. public/index.php es el front controller: recibe todas las peticiones, carga el autoload de Composer y arranca la aplicación. Solo él debe ser público porque el resto del proyecto contiene código, configuración y el archivo .env con contraseñas; si fueran accesibles desde el navegador, cualquiera podría leerlos.

  2. Orden correcto:

txt
public/index.php → Middleware → Router → Controlador → Respuesta

(La respuesta vuelve a pasar por el middleware antes de salir al navegador.)

  1. Ejemplo para un gimnasio:
    • Registro de socios: modelo Socio (Modelo), formulario de alta (Vista), SocioController@store guarda los datos (Controlador).
    • Control de pagos mensuales: modelo Pago relacionado con Socio, listado de socios con pago vencido.
    • Recordatorio por correo cuando vence la membresía: un job en cola que envía un correo.

Resumen ​

  • Laravel es un framework PHP que resuelve lo repetitivo (rutas, BD, vistas, seguridad) para que te enfoques en el negocio.
  • Sigue el patrón MVC: modelos en app/Models, vistas en resources/views, controladores en app/Http/Controllers.
  • Toda petición entra por public/index.php, pasa por middleware, el router y un controlador.
  • Trae seguridad por defecto: CSRF, escape de HTML, consultas preparadas y hash de contraseñas.
  • Este curso usa Laravel 11/12: la configuración principal vive en bootstrap/app.php.

Academia Web — aprende, copia y construye.