Prologo
Primi Passi
Architettura
Le Basi
- Routing
- Middleware
- Protezione da CSRF
- Controller
- Richieste
- Risposte
- Views
- Blade
- Vite
- URL
- Sessioni
- Validazione
- Errori
- Logging
Approfondimenti
- Artisan
- Broadcasting
- Cache
- Collezioni
- Concorrenza
- Contesto
- Contratti
- Eventi
- File System
- Helpers
- Client HTTP
- Localizzazione
- Notifiche
- Sviluppo di Package
- Processi
- Code
- Rate-limiting
- Stringhe
- Scheduling di Task
Sicurezza
Database
Eloquent ORM
Testing
Package
Struttura
Introduzione
La struttura predefinita dell’applicazione Laravel è pensata per offrire un ottimo punto di partenza sia per applicazioni grandi che piccole. Ma sei libero di organizzare la tua applicazione come preferisci. Laravel non impone quasi nessuna restrizione sulla posizione delle classi, purché Composer possa caricarle automaticamente.
Sei nuovo a Laravel? Dai un’occhiata al Laravel Bootcamp per un tour pratico del framework mentre ti guidiamo nella creazione della tua prima applicazione Laravel.
La Directory Root
La Directory App
La directory app
contiene il codice principale della tua applicazione. Esploreremo questa directory più in dettaglio a breve; tuttavia, quasi tutte le classi della tua applicazione si troveranno in questa directory.
La Directory Bootstrap
La directory bootstrap
contiene il file app.php
che inizializza il framework. Questa directory include anche una cartella cache
che contiene file generati dal framework per ottimizzare le prestazioni, come i file di cache delle route e dei servizi.
La directory config
La directory config
, come suggerisce il nome, contiene tutti i file di configurazione della tua applicazione. È una buona idea leggere attentamente questi file e familiarizzare con tutte le opzioni disponibili.
La Directory Database
La directory database
contiene le database migrations, le model factories e i seeds. Se desideri, puoi anche utilizzare questa directory per ospitare un database SQLite.
La Directory Public
La directory public
contiene il file index.php
, che è il punto di ingresso per tutte le richieste che entrano nella tua applicazione e configura l’autoloading. Questa directory ospita anche i tuoi asset come immagini, JavaScript e CSS.
La Directory resources
La directory resources
contiene le tue views e i tuoi asset non compilati, come CSS o JavaScript.
La Directory Routes
La directory routes
contiene tutte le definizioni delle rotte per la tua applicazione. Per impostazione predefinita, Laravel include due file di rotte: web.php
e console.php
.
Il file web.php
contiene le rotte che Laravel assegna al gruppo di middleware web
, che fornisce stato della sessione, protezione CSRF e crittografia dei cookie. Se la tua applicazione non offre un’API RESTful senza stato, allora tutte le tue rotte saranno probabilmente definite nel file web.php
.
Il file console.php
è dove puoi definire tutti i tuoi comandi console basati su closure. Ogni closure è legata a un’istanza di comando, permettendo un approccio semplice per interagire con i metodi IO di ogni comando. Anche se questo file non definisce rotte HTTP, definisce punti di ingresso (rotte) basati sulla console nella tua applicazione. Puoi anche schedulare attività nel file console.php
.
Opzionalmente, puoi installare file di rotte aggiuntivi per le rotte API (api.php
) e i canali di broadcast (channels.php
), tramite i comandi Artisan install:api
e install:broadcasting
.
Il file api.php
contiene rotte che sono destinate ad essere stateless, quindi le richieste che entrano nell’applicazione tramite queste rotte devono essere autenticate tramite token e non avranno accesso allo stato della sessione.
Il file channels.php
è dove puoi registrare tutti i canali di broadcasting degli eventi che la tua applicazione supporta.
La Directory di Storage
La directory storage
contiene i tuoi log, i template Blade compilati, le sessioni basate su file, le cache file e altri file generati dal framework. Questa directory è suddivisa in app
, framework
e logs
. La directory app
può essere usata per memorizzare qualsiasi file generato dalla tua applicazione. La directory framework
serve per conservare i file generati dal framework e le cache. Infine, la directory logs
contiene i file di log della tua applicazione.
La directory storage/app/public
può essere usata per memorizzare file generati dagli utenti, come gli avatar del profilo, che devono essere accessibili pubblicamente. Dovresti creare un symbolic link in public/storage
che punta a questa directory. Puoi creare il link usando il comando Artisan php artisan storage:link
.
La Directory dei Test
La directory tests
contiene i tuoi test automatici. Esempi di test unitari con Pest o PHPUnit e test di funzionalità sono forniti di default. Ogni classe di test dovrebbe terminare con la parola Test
. Puoi eseguire i tuoi test usando i comandi /vendor/bin/pest
o /vendor/bin/phpunit
. Oppure, se preferisci una rappresentazione più dettagliata e bella dei risultati dei test, puoi eseguire i tuoi test usando il comando Artisan php artisan test
.
La Directory Vendor
La directory vendor
contiene le tue dipendenze installate con Composer.
La Directory App
La maggior parte della tua applicazione si trova nella directory app
. Per impostazione predefinita, questa directory è sotto il namespace App
ed è caricata automaticamente da Composer usando lo standard di autoloading PSR-4.
Per impostazione predefinita, la directory app
contiene le directory Http
, Models
e Providers
. Tuttavia, nel tempo verranno create diverse altre directory all’interno di app
utilizzando i comandi make di Artisan per generare classi. Ad esempio, la directory app/Console
non esisterà finché non eseguirai il comando make:command
di Artisan per creare una classe di comando.
Sia le directory Console
che Http
sono spiegate più dettagliatamente nelle sezioni seguenti, ma considera le directory Console
e Http
come un’API che si collega al nucleo della tua applicazione. Il protocollo HTTP e la CLI sono entrambi meccanismi per interagire con la tua applicazione, ma non contengono effettivamente la logica dell’applicazione. In altre parole, sono due modi per "dare degli ordini" alla tua applicazione. La directory Console
contiene tutti i tuoi comandi Artisan, mentre la directory Http
contiene i tuoi controller, middleware e richieste.
Molte delle classi nella directory
app
possono essere generate da Artisan tramite comandi. Per vedere i comandi disponibili, esegui il comandophp artisan list make
nel tuo terminale.
La Directory Broadcasting
La directory Broadcasting
contiene tutte le classi dei canali di broadcast per la tua applicazione. Queste classi sono generate usando il comando make:channel
. Questa directory non esiste di default, ma verrà creata automaticamente quando crei il tuo primo canale. Per saperne di più sui canali, consulta la documentazione sul broadcasting.
La Directory Console
La directory Console
contiene tutti i comandi personalizzati di Artisan per la tua applicazione. Questi comandi possono essere generati usando il comando make:command
.
La Directory degli Eventi
Questa directory non esiste di default, ma verrà creata dai comandi Artisan event:generate
e make:event
. La directory Events
contiene classi di eventi. Gli eventi possono essere usati per avvisare altre parti della tua applicazione che una determinata azione è avvenuta, offrendo molta flessibilità e disaccoppiamento.
La Directory Exceptions
La directory Exceptions
contiene tutte le eccezioni personalizzate per la tua applicazione. Queste eccezioni possono essere generate usando il comando make:exception
.
La directory Http
La directory Http
contiene i tuoi controller, middleware e form requests. Quasi tutta la logica per gestire le richieste che entrano nella tua applicazione sarà posizionata in questa directory.
La Directory Jobs
Questa directory non esiste di default, ma verrà creata se esegui il comando Artisan make:job
. La directory Jobs
contiene i vari jobs per la tua applicazione. I job possono essere messi in coda dalla tua applicazione o eseguiti in modo sincrono all’interno del ciclo di vita della richiesta corrente. I vari job che vengono eseguiti in modo sincrono durante la richiesta corrente sono talvolta chiamati "comandi" poiché sono un’implementazione del command pattern.
La Directory dei Listener
Questa cartella non esiste di default, ma verrà creata se esegui i comandi Artisan event:generate
o make:listener
. La cartella Listeners
contiene le classi che gestiscono i tuoi eventi. I listener degli eventi ricevono un’istanza dell’evento ed eseguono logica in risposta all’attivazione dell’evento. Ad esempio, un evento UserRegistered
potrebbe essere gestito da un listener SendWelcomeEmail
.
La Directory Mail
Questa directory non esiste di default, ma verrà creata se esegui il comando Artisan make:mail
. La directory Mail
contiene tutte le tue classi che rappresentano email inviate dalla tua applicazione. Gli oggetti Mail permettono di racchiudere tutta la logica per creare un’email in una singola, semplice classe che può essere inviata usando il metodo Mail::send
.
La directory Models
La directory Models
contiene tutte le tue Eloquent model classes. L’ORM Eloquent incluso in Laravel offre un’implementazione semplice ed elegante di ActiveRecord per lavorare con il tuo database. Ogni tabella del database ha un "Model" corrispondente utilizzato per interagire con essa. I Model ti permettono di eseguire query sui dati delle tue tabelle e di aggiungere nuovi record.
La Directory delle Notifiche
Questa directory non esiste di default, ma verrà creata se esegui il comando Artisan make:notification
. La directory Notifications
contiene tutte le notifications "transactional" inviate dalla tua applicazione, come semplici notifiche sugli eventi che accadono nella tua applicazione. La funzionalità di notifica di Laravel astrae l’invio delle notifiche attraverso diversi driver come email, Slack, SMS o memorizzate in un database.
La Directory delle Policy
Questa directory non esiste di default, ma verrà creata se esegui il comando Artisan make:policy
. La directory Policies
contiene le classi di policy di autorizzazione per la tua applicazione. Le policy sono utilizzate per determinare se un utente può eseguire una determinata azione su una risorsa.
La Directory dei Providers
La directory Providers
contiene tutti i service providers per la tua applicazione. I service providers avviano la tua applicazione collegando i servizi nel service container, registrando eventi o eseguendo altre operazioni per preparare la tua applicazione alle richieste in arrivo.
In una nuova applicazione Laravel, questa directory conterrà già l’AppServiceProvider
. Puoi aggiungere i tuoi provider a questa directory secondo necessità.
La Directory Rules
Questa directory non esiste di default, ma verrà creata se esegui il comando Artisan make:rule
. La directory Rules
contiene gli oggetti di regole di validazione personalizzate per la tua applicazione. Le regole vengono utilizzate per incapsulare logiche di validazione complesse in un oggetto semplice. Per maggiori informazioni, consulta la documentazione sulla validazione.