Vai al contenuto principale

Introduzione

La struttura predefinita di un’applicazione Laravel offre un buon punto di partenza sia per applicazioni di grandi dimensioni sia per applicazioni più piccole. Sei però libero di organizzare l’applicazione come preferisci. Laravel impone pochissime restrizioni sulla posizione delle classi: basta che Composer riesca ad autoloadarle.

Directory radice

Quando crei un nuovo progetto Laravel viene generata la seguente struttura di directory:
example-app/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
├── .env
├── artisan
└── composer.json

Directory app/

Contiene il codice principale dell’applicazione. Quasi tutte le classi dell’applicazione — controller, modelli, middleware e altre — sono collocate qui. Di default include le sottodirectory Http, Models e Providers. Generando classi con i comandi Artisan verranno create automaticamente anche altre sottodirectory.

Directory bootstrap/

Contiene il file app.php che avvia il framework. Contiene inoltre la directory cache/, dove risiedono i file di ottimizzazione delle prestazioni come la cache delle route e dei servizi.

Directory config/

Contiene tutti i file di configurazione dell’applicazione. È consigliato leggerli per prendere confidenza con le opzioni disponibili.

Directory database/

Contiene migration, factory dei modelli e seeder del database. Puoi collocare qui anche i file di database SQLite.

Directory public/

Contiene index.php, il punto d’ingresso di tutte le richieste dell’applicazione. Qui vengono conservati anche gli asset come immagini, JavaScript e CSS.
Imposta la document root del web server sulla directory public/ del progetto Laravel. Pubblicare direttamente la root del progetto o una sottodirectory comporta il rischio di esporre file riservati.

Directory resources/

Contiene le viste e gli asset non compilati come CSS e JavaScript grezzi.

Directory routes/

Contiene tutte le definizioni delle route dell’applicazione. Di default include due file di route: web.php e console.php.
FileUso
web.phpRoute per il browser. Viene applicato il gruppo di middleware web, che fornisce sessione, protezione CSRF e cifratura dei cookie.
console.phpFile in cui definisci i comandi Artisan tramite closure.
api.phpRoute API stateless. Viene aggiunto con il comando install:api.
channels.phpFile in cui registri i canali di broadcasting degli eventi.

Directory storage/

Contiene i file generati dal framework: log, template Blade compilati, sessioni basate su file, cache basata su file e altro. È suddivisa in tre sottodirectory: app/, framework/ e logs/.

Directory tests/

Contiene i test automatizzati. Include fin dall’inizio esempi di test unitari e funzionali con Pest o PHPUnit.

Directory vendor/

Contiene le dipendenze di Composer. Questa directory non va inclusa nel controllo di versione.

Dettagli della directory app/

Molte classi della directory app possono essere generate con i comandi Artisan. Per vedere i comandi disponibili esegui:
php artisan list make
Contiene controller, middleware e form request. Qui risiede la quasi totalità della logica di elaborazione delle richieste destinate all’applicazione.
Contiene tutte le classi dei modelli Eloquent. Per ogni tabella del database esiste un “modello” corrispondente, usato per interrogare e inserire dati.
Contiene tutti i service provider dell’applicazione. I service provider effettuano il binding dei servizi al container, registrano gli eventi e svolgono altre operazioni per avviare l’applicazione.
Contiene tutti i comandi Artisan personalizzati. Puoi generarli con il comando make:command.
Contiene tutte le eccezioni personalizzate dell’applicazione. Puoi generarle con il comando make:exception.

File importanti

File .env

Gestisce i valori di configurazione che variano per ciascun ambiente (informazioni di connessione al database, chiavi API, ecc.). Viene consultato dai file di configurazione in config/ tramite l’helper env().
APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=sqlite

File artisan

È il punto di ingresso dell’interfaccia a riga di comando Artisan. Si esegue nel formato php artisan <nome-comando>.

Prossimi passi

Routing

Impara a definire le route e a collegare gli URL alla logica applicativa.
Ultima modifica il 13 luglio 2026