Laravel 11: Guía práctica de Inicio

Descubre lo nuevo que llega hoy a Laravel en su versión 11. Una estructura más compacta y simple, no estás obligado a adoptarlo de inmediato; todas las aplicaciones existentes construidas sobre la estructura de Laravel 10 seguirán funcionando sin problemas.

Hoy es el dia de lanzamiento de Laravel 11 y con este articulo repasaremos lo basico que necesitas para empezar un proyecto nuevo.

Instalación

Teniendo el instalador de Laravel el cual se instala previamente de esta forma:

1composer global require laravel/installer

solo basta correr el siguiente comando para inicializar nuestro nuevo proyecto:

1laravel new <project-name>

Despues de eso nos encontraremos con el siguiente prompt:

1 _ _
2 | | | |
3 | | __ _ _ __ __ ___ _____| |
4 | | / _` | '__/ _` \ \ / / _ \ |
5 | |___| (_| | | | (_| |\ V / __/ |
6 |______\__,_|_| \__,_| \_/ \___|_|
7 
8 
9┌ Would you like to install a starter kit? ────────────────────┐
10│ › ● No starter kit │
11│ ○ Laravel Breeze │
12│ ○ Laravel Jetstream │
13└──────────────────────────────────────────────────────────────┘

Aca podremos seleccionar el starter kit que usaremos en nuestro proyecto, para este ejemplo seleccionaré breeze.

Al seleccionarlo nos preguntaria cual stack vamos a usar:

1 Which Breeze stack would you like to install? ───────────────┐
2 Blade with Alpine
3 Livewire (Volt Class API) with Alpine
4 Livewire (Volt Functional API) with Alpine
5 React with Inertia
6 Vue with Inertia
7 API only
8└──────────────────────────────────────────────────────────────┘

Luego de esa selección otro promt más preguntando si queremos soporte a dark mode

1 Would you like dark mode support? ───────────────────────────┐
2 Yes / No
3└──────────────────────────────────────────────────────────────┘

Luego de la instalación de los paquetes y todo eso nos preguntaría el motor a base de datos a usar, selecionaré SQLite

1 Which database will your application use? ───────────────────┐
2 MySQL
3 MariaDB
4 PostgreSQL
5 SQLite
6 SQL Server
7└──────────────────────────────────────────────────────────────┘

Luego esperamos un momento a que termine todo el proceso de instalación e iremos a ver a nuestra nueva página de inicio:

página de inicio de Laravel 11

Estructura de directorios

Laravel 11 se caracteriza por tener una estructura más reducida a nivel de archivos como se puede ver aquí en este ejemplo:

1├── app
2   ├── Http
3   │   └── Controllers
4   │   └── Controller.php
5   ├── Models
6   │   └── User.php
7   └── Providers
8      └── AppServiceProvider.php

Una mejor organizacion para los middlewares, servicios, excepciones

Ahora, dentro del directorio bootstrap/app.php se podrá configurar los middlewares que usaremos dentro de nuestra aplicación ya que tendrá una estructura de esta forma:

1<?php
2 
3use Illuminate\Foundation\Application;
4use Illuminate\Foundation\Configuration\Exceptions;
5use Illuminate\Foundation\Configuration\Middleware;
6 
7return Application::configure(basePath: dirname(__DIR__))
8 ->withRouting(
9 web: __DIR__.'/../routes/web.php',
10 commands: __DIR__.'/../routes/console.php',
11 health: '/up',
12 )
13 ->withMiddleware(function (Middleware $middleware) {
14 //
15 })
16 ->withExceptions(function (Exceptions $exceptions) {
17 //
18 })->create();

Un simple AppServiceProvider

Laravel 11 consolida múltiples Service Providers en uno solo, reduciendo el código repetitivo y mejorando la eficiencia de construcción de nuestra aplicación.

Sistema de rutas más simples

El directorio routes ahora cuenta solamente con el siguiente par de archivos:

1├── routes
2   ├── console.php
3   └── web.php

lo que hace opcional la instalacion / publicación del archivo api.php en el directorio routes por medio del comando:

1php artisan install:api

El cual al momento de usarlo procederá a la instalación de laravel/sanctum y tambien va a proceder a preguntar si deseas correr la migración pendiente:

1One new database migration has been published.
2Would you like to run all pending database migrations? (yes/no) [yes]:

Al igual que el archivo channels.php luego de usar el comando:

1php artisan install:broadcasting

Realizaria la instalación del archivo de configuración y preguntaría que si quieres instalar Laravel Reverb

1 INFO Published 'broadcasting' configuration file.
2 
3 INFO Published 'channels' route file.
4 
5 Would you like to install Laravel Reverb? ───────────────────┐
6 Yes / No
7└──────────────────────────────────────────────────────────────┘

Controladores

Ahora es mucho más simple incluir lo que necesitemos en nuestros controladores.

En comparación a Laravel 10, ahora nuestrio archivo Controller es una clase abstracta lo que nos permite incluir lo que quisieramos en cada uno de nuestros controladores de la aplicación.

1<?php
2 
3namespace App\Http\Controllers;
4 
5abstract class Controller
6{
7 //
8}

SQLite por defecto (?)

Laravel 11 viene con SQLite como la base de datos predeterminada, lo que permite un inicio rápido sin configuraciones adicionales.

Aunque esto levantó un poco de movida dentro de la comunidad ya que no todos estan de acuerdo sobre este cambio.

En lo personal este cambio es indiferente, siempre he configurado mysql para trabajar en local así que...

YOLO

Angel Cruz's avatar
Autor
Angel Cruz