f in x
Laravel 12 Nuova Struttura App Bootstrap Minimale e Differenze da Laravel 10 11
> cd .. / HUB_EDITORIALE > Visualizza in Inglese
Sviluppo di siti web

Laravel 12 Nuova Struttura App Bootstrap Minimale e Differenze da Laravel 10 11

[2026-05-29] Author: Ing. Calogero Bono

L'architettura di un framework web plasma profondamente il modo in cui gli sviluppatori organizzano il codice, scalano le applicazioni e mantengono i progetti nel tempo. Con l'arrivo di Laravel 12, il team di Taylor Otwell ha introdotto una revisione radicale della struttura predefinita dell'applicazione, puntando su un bootstrap minimale e una gerarchia di directory più piatta e intuitiva. Questa guida esamina in dettaglio le modifiche apportate, confrontandole con Laravel 10 e 11, e spiega come adattare il proprio flusso di lavoro per sfruttare appieno la nuova architettura. Che tu stia aggiornando un progetto esistente o iniziando da zero, comprendere queste trasformazioni è essenziale per rimanere all'avanguardia nell'ecosistema Laravel.

Panoramica della Nuova Architettura di Laravel 12

Laravel 12 abbandona la tradizionale separazione in app/Http, app/Models, app/Providers a favore di una struttura completamente appiattita. La directory app ora contiene solo i sottoinsiemi necessari: Controllers, Models, Middleware, Providers (un unico AppServiceProvider ridotto all'osso) e la nuova cartella Actions per incapsulare la logica di business. Il famigerato app/Exceptions/Handler scompare, integrato direttamente nel kernel dell'applicazione. Anche il file routes/web.php viene semplificato, con la rimozione del provider RouteServiceProvider e l'adozione di un caricamento automatico delle rotte basato su convenzioni.

La Struttura della Directory 'app'

Nel bootstrap minimale di Laravel 12, la directory app si presenta così:

app/
├── Actions/
├── Controllers/
├── Middleware/
├── Models/
├── Providers/
│   └── AppServiceProvider.php
└── enums/

Non esiste più app/Http. I controller risiedono direttamente in app/Controllers (con namespace App\Controllers anziché App\Http\Controllers). I model restano in app/Models. I middleware vengono raggruppati in app/Middleware e registrati automaticamente tramite attributi. Il file AppServiceProvider ora contiene solo il metodo boot con le configurazioni minime essenziali; tutto il resto è delegato a provider specifici generati con artisan make:provider.

Bootstrap Minimale: il Nuovo 'bootstrap/app.php'

Il file bootstrap/app.php è stato drasticamente ridotto. In Laravel 10 e 11 conteneva la creazione dell'istanza dell'applicazione, la registrazione dei service provider di default e la configurazione del middleware globale. In Laravel 12, tutto ciò viene risolto in poche righe grazie all'auto-discovery:

<?php

use Illuminate\Foundation\Application;

return Application::configure()
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        api: __DIR__.'/../routes/api.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function ($middleware) {
        // Middleware personalizzati o di gruppo
    })
    ->withExceptions(function ($exceptions) {
        // Gestione personalizzata delle eccezioni
    })
    ->create();

Non c'è più app/Exceptions/Handler: le eccezioni vengono gestite direttamente nella closure withExceptions. Analogamente, il middleware globale viene registrato via withMiddleware. Questo approccio riduce il numero di file da creare e manutenere, spostando la configurazione nel punto di ingresso dell'applicazione.

Differenze Rispetto a Laravel 10 e 11

Da Laravel 10 a Laravel 12

Laravel 10 utilizzava ancora la struttura classica con app/Http/Controllers, app/Http/Middleware, app/Providers e app/Exceptions/Handler. Il passaggio a Laravel 12 richiede una ristrutturazione significativa delle directory e dei namespace. I controller devono essere spostati da App\Http\Controllers a App\Controllers e i namespace aggiornati in tutti i file che li referenziano. Il file bootstrap/app.php va riscritto seguendo il nuovo pattern. Inoltre, il RouteServiceProvider non esiste più: la registrazione delle rotte avviene direttamente in bootstrap/app.php o tramite il provider standard App\Providers\RouteServiceProvider (mantenuto per retrocompatibilità ma sconsigliato).

Da Laravel 11 a Laravel 12

Laravel 11 aveva già compiuto un passo verso la semplificazione, eliminando alcuni file boilerplate (come Kernel.php e Exceptions/Handler). Tuttavia, manteneva ancora la directory app/Http e il RouteServiceProvider di default. Con Laravel 12, la directory app/Http scompare completamente. I middleware vengono ora definiti tramite attributi PHP, come #[Middleware('auth')] nei controller, oppure registrati globalmente in bootstrap/app.php. Anche il vecchio sistema di alias di middleware è stato sostituito da attributi o da un nuovo metodo alias nella closure withMiddleware.

Tabella Comparativa delle Directory Principali

Laravel 10                        Laravel 11                        Laravel 12
app/                              app/                              app/
├── Console/                      ├── Console/                      ├── Actions/
├── Exceptions/                   ├── Exceptions/                   ├── Controllers/
├── Http/                         ├── Http/                         ├── Middleware/
│   ├── Controllers/              │   ├── Controllers/              ├── Models/
│   ├── Middleware/                │   ├── Middleware/                ├── Providers/
│   └── Requests/                 │   └── Requests/                 └── enums/
├── Models/                       ├── Models/
├── Providers/                    └── Providers/
└── Providers/

Impatto sullo Sviluppo Quotidiano

La nuova struttura riduce il cognitive load per gli sviluppatori che iniziano un progetto Laravel. Non è più necessario chiedersi dove posizionare un controller o un middleware: la risposta è direttamente nelle rispettive cartelle sotto app. Inoltre, l'uso degli attributi per la registrazione del middleware rende il codice più dichiarativo e facilmente testabile. Il bootstrap minimale si traduce in un avvio dell'applicazione più rapido, poiché meno file vengono caricati automaticamente. Anche la gestione delle eccezioni diventa più snella: invece di creare un'intera classe Handler, basta una closure in bootstrap/app.php.

Per chi proviene da Laravel 10, l'aggiornamento richiede attenzione ai dettagli. È consigliabile utilizzare lo strumento laravel/upgrade per automatizzare la migrazione dei namespace e delle directory. Per chi già usa Laravel 11, il passaggio è meno traumatico: la maggior parte del codice rimane valida, con solo l'eliminazione della directory app/Http e l'aggiornamento del file bootstrap/app.php.

Best Practices per Adottare la Nuova Struttura

  • Riorganizzare i namespace: aggiorna tutti i riferimenti da App\Http\Controllers a App\Controllers e così via.
  • Sfruttare gli attributi PHP: usa #[Middleware] e #[Route] per rendere il codice più esplicito.
  • Centralizzare la configurazione: mantieni le closure in bootstrap/app.php per middleware ed eccezioni, evitando file separati inutili.
  • Limitare i service provider: non creare provider superflui; usa AppServiceProvider solo per bindings essenziali.

Conclusione Pratica

Laravel 12 segna un punto di svolta nella filosofia di design del framework: meno boilerplate, più chiarezza. La nuova struttura dell'applicazione e il bootstrap minimale non solo semplificano la vita agli sviluppatori, ma rendono anche i progetti più facili da comprendere per i nuovi arrivati. Se stai avviando un nuovo progetto, inizia direttamente con Laravel 12 e abbraccia la struttura appiattita. Se aggiorni un progetto esistente, pianifica la migrazione con attenzione, utilizzando gli strumenti ufficiali e testando ogni modifica. Per approfondire l'intero ecosistema Laravel 11 e 12, consulta la nostra guida definitiva all'architettura Eloquent ORM e Livewire 3. Inoltre, tieni d'occhio le ultime novità di PHP, come le property hooks e typed class constants, che si integrano perfettamente con Laravel 12.

Sponsored Protocol

Ing. Calogero Bono

> AUTHOR_EXTRACTED

Ing. Calogero Bono

Co-founder di Meteora Web. Ingegnere informatico, sviluppo ecosistemi digitali ad alte prestazioni. AI, automazione, SEO tecnica e infrastrutture web. Scrivo di tecnologia per rendere complesso… semplice.

[ Read Full Dossier ]

Hai bisogno di applicare questa strategia?

Esegui il protocollo di contatto per iniziare un progetto con noi.

> INIZIA_PROGETTO

Sponsored

> MW_JOURNAL

> READ_ALL()