> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Struttura delle directory

> Spiegazione del ruolo delle principali directory e file di un progetto Laravel.

## 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.

<Warning>
  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.
</Warning>

### Directory `resources/`

Contiene le [viste](/it/views) 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`.

| File           | Uso                                                                                                                                 |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `web.php`      | Route per il browser. Viene applicato il gruppo di middleware `web`, che fornisce sessione, protezione CSRF e cifratura dei cookie. |
| `console.php`  | File in cui definisci i comandi Artisan tramite closure.                                                                            |
| `api.php`      | Route API stateless. Viene aggiunto con il comando `install:api`.                                                                   |
| `channels.php` | File 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](https://pestphp.com) o [PHPUnit](https://phpunit.de/).

### Directory `vendor/`

Contiene le dipendenze di [Composer](https://getcomposer.org). 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:

```shell theme={null}
php artisan list make
```

<AccordionGroup>
  <Accordion title="Directory Http/">
    Contiene controller, middleware e form request.
    Qui risiede la quasi totalità della logica di elaborazione delle richieste destinate all'applicazione.
  </Accordion>

  <Accordion title="Directory Models/">
    Contiene tutte le classi dei [modelli Eloquent](/it/eloquent).
    Per ogni tabella del database esiste un "modello" corrispondente, usato per interrogare e inserire dati.
  </Accordion>

  <Accordion title="Directory Providers/">
    Contiene tutti i [service provider](/it/service-providers) dell'applicazione.
    I service provider effettuano il binding dei servizi al container, registrano gli eventi e svolgono altre operazioni per avviare l'applicazione.
  </Accordion>

  <Accordion title="Directory Console/">
    Contiene tutti i comandi Artisan personalizzati.
    Puoi generarli con il comando `make:command`.
  </Accordion>

  <Accordion title="Directory Exceptions/">
    Contiene tutte le eccezioni personalizzate dell'applicazione.
    Puoi generarle con il comando `make:exception`.
  </Accordion>
</AccordionGroup>

## 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()`.

```ini theme={null}
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

<Card title="Routing" icon="route" href="/it/routing">
  Impara a definire le route e a collegare gli URL alla logica applicativa.
</Card>


## Related topics

- [Introduzione a React — le basi per usarlo con Inertia × Laravel](/it/blog/react-introduction.md)
- [Introduzione a Svelte — le basi per usarlo con Inertia × Laravel](/it/blog/svelte-introduction.md)
- [Introduzione a Vue.js — le basi per usarlo con Inertia × Laravel](/it/blog/vue-introduction.md)
- [Installazione](/it/installation.md)
- [Sviluppo di pacchetti Laravel](/it/advanced/package-development.md)
