Laravel

Laravel 11: Guía práctica de Inicio

Autorangel cruz
Publicado
Lectura3 min de lectura
Laravel 11: Guía práctica de Inicio

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:

composer global require laravel/installer

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

laravel new <project-name>

Despues de eso nos encontraremos con el siguiente prompt:

   _                               _
  | |                             | |
  | |     __ _ _ __ __ ___   _____| |
  | |    / _` | '__/ _` \ \ / / _ \ |
  | |___| (_| | | | (_| |\ V /  __/ |
  |______\__,_|_|  \__,_| \_/ \___|_|
 
 
 ┌ Would you like to install a starter kit? ────────────────────┐
 │ › ● No starter kit                                           │
 │   ○ Laravel Breeze                                           │
 │   ○ Laravel Jetstream                                        │
 └──────────────────────────────────────────────────────────────┘

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:

 Which Breeze stack would you like to install? ───────────────┐
 Blade with Alpine
 Livewire (Volt Class API) with Alpine                  │ │
 Livewire (Volt Functional API) with Alpine             │ │
 React with Inertia
 Vue with Inertia
 API only
 └──────────────────────────────────────────────────────────────┘
<x-front.flash type="warning" :show=true>
Por simplicidad seleccionaré `Blade with Alpine`
</x-front.flash>

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

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

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

 Which database will your application use? ───────────────────┐
 MySQL
 MariaDB
 PostgreSQL
 SQLite
 SQL Server
 └──────────────────────────────────────────────────────────────┘

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:

├── app
   ├── Http
   └── Controllers
       └── Controller.php
   ├── Models
   └── User.php
   └── Providers
       └── 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:

<?php
 
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
 
return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->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:

├── routes
   ├── console.php
   └── web.php

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

php 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:

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

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

php artisan install:broadcasting

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

   INFO  Published 'broadcasting' configuration file.  
 
   INFO  Published 'channels' route file.  
 
 Would you like to install Laravel Reverb? ───────────────────┐
 Yes / No
 └──────────────────────────────────────────────────────────────┘

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.

<?php
 
namespace App\Http\Controllers;
 
abstract class Controller
{
    //
}

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

Bio
Angel Cruz

Desarrollador web full-stack enfocado en React, buenas prácticas y código abierto. Apasionado por construir productos útiles y compartir lo aprendido en el camino.