La struttura delle directory
Introduzione
La struttura predefinita dell’applicazione Laravel è pensata per fornire un ottimo punto di partenza sia per applicazioni grandi che piccole. Tuttavia, sei libero di organizzare la tua applicazione come preferisci. Laravel impone pochissime restrizioni su dove una determinata classe deve essere posizionata, purché Composer riesca a caricare automaticamente la classe.
La directory principale
La directory App
La directory app contiene il codice principale della tua applicazione. Esploreremo questa directory 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 avvia il framework. Questa directory contiene anche una directory cache che contiene file generati dal framework per ottimizzazioni delle prestazioni, come i file di cache delle route e dei servizi. In genere non dovresti modificare i file in questa directory.
La directory Config
La directory config, come suggerisce il nome, contiene tutti i file di configurazione della tua applicazione. È una buona idea leggere tutti questi file e familiarizzare con tutte le opzioni disponibili.
La directory Database
La directory database contiene le migrazioni del database, i factory dei modelli e i seed. Se lo 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 il caricamento automatico. Questa directory contiene anche le risorse come immagini, JavaScript e CSS.
La directory Resources
La directory resources contiene le tue viste (views) così come le risorse non elaborate e non compilate come CSS o JavaScript.
La directory Routes
La directory routes contiene tutte le definizioni delle route per la tua applicazione. Per impostazione predefinita, Laravel include diversi file di route: web.php, api.php, console.php e channels.php.
Il file web.php contiene le route che RouteServiceProvider inserisce nel gruppo di middleware web, che fornisce lo stato di sessione, la protezione CSRF e la crittografia dei cookie. Se la tua applicazione non offre un’API REST stateless, allora molto probabilmente tutte le tue route saranno definite nel file web.php.
Il file api.php contiene le route che RouteServiceProvider inserisce nel gruppo di middleware api. Queste route sono progettate per essere stateless, quindi le richieste che entrano nell’applicazione tramite queste route sono destinate ad essere autenticate tramite token e non avranno accesso allo stato di sessione.
Il file console.php è dove puoi definire tutti i comandi console basati su closure. Ogni closure è collegata a un’istanza di comando, consentendo un approccio semplice all’interazione con i metodi IO di ogni comando. Anche se questo file non definisce route HTTP, definisce punti di ingresso (route) basati su console per la tua applicazione.
Il file channels.php è dove puoi registrare tutti i canali di trasmissione degli eventi supportati dalla tua applicazione.
La directory Storage
La directory storage contiene i log, i template Blade compilati, le sessioni basate su file, le cache basate su file e altri file generati dal framework. Questa directory è suddivisa in directory app, framework e logs. La directory app può essere utilizzata per archiviare qualsiasi file generato dalla tua applicazione. La directory framework viene utilizzata per archiviare i file generati dal framework e le cache. Infine, la directory logs contiene i file di log dell’applicazione.
La directory storage/app/public può essere utilizzata per archiviare file generati dall’utente, come avatar dei profili, che devono essere accessibili pubblicamente. Dovresti creare un collegamento simbolico in public/storage che punta a questa directory. Puoi creare il collegamento utilizzando il comando Artisan php artisan storage:link.
La directory Tests
La directory tests contiene i tuoi test automatizzati. Sono inclusi test unitari di esempio PHPUnit e test di funzionalità. Ogni classe di test dovrebbe essere suffissa con la parola Test. Puoi eseguire i tuoi test utilizzando i comandi phpunit o php vendor/bin/phpunit. Oppure, se desideri una rappresentazione più dettagliata e piacevole dei risultati dei tuoi test, puoi eseguire i test utilizzando il comando Artisan php artisan test.
La directory Vendor
La directory vendor contiene le tue dipendenze di Composer.
La directory App
La maggior parte della tua applicazione è contenuta nella directory app. Per impostazione predefinita, questa directory è organizzata in namespace sotto App ed è caricata automaticamente da Composer utilizzando lo standard di autoloading PSR-4.
La directory app contiene diverse directory aggiuntive come Console, Http e Providers. Pensa alla directory Console e Http come fornitori di un’API per il nucleo della tua applicazione. Il protocollo HTTP e l’interfaccia a riga di comando (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 impartire comandi alla tua applicazione. La directory Console contiene tutti i comandi Artisan, mentre la directory Http contiene i tuoi controller, middleware e richieste.
Una varietà di altre directory sarà generata all’interno della directory app man mano che utilizzi i comandi Artisan make per generare classi. Ad esempio, la directory app/Jobs non esisterà finché non eseguirai il comando Artisan make:job per generare una classe di job.
La directory broadcasting
La directory Broadcasting contiene tutte le classi dei canali di trasmissione (broadcast channel) per la tua applicazione. Queste classi vengono generate utilizzando 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 sulla trasmissione degli eventi (event broadcasting).
La directory Console
La directory Console contiene tutti i comandi Artisan personalizzati per la tua applicazione. Questi comandi possono essere generati utilizzando il comando make:command. In questa directory è presente anche il kernel della console, dove vengono registrati i comandi Artisan personalizzati e definiti i task pianificati (scheduled tasks).
La directory Eventi (Events)
Questa directory non esiste per impostazione predefinita, ma verrà creata per te tramite i comandi Artisan event:generate e make:event. La directory Events ospita le classi degli eventi. Gli eventi possono essere utilizzati per avvisare altre parti della tua applicazione che è avvenuta una determinata azione, offrendo grande flessibilità e disaccoppiamento.
La directory Eccezioni (Exceptions)
La directory Exceptions contiene l’exception handler della tua applicazione ed è anche un buon posto per posizionare tutte le eccezioni generate dalla tua applicazione. Se desideri personalizzare la registrazione o la visualizzazione delle eccezioni, dovresti modificare la classe Handler in questa directory. In questo modo puoi gestire in modo personalizzato la registrazione degli errori e la loro visualizzazione per adattarli alle esigenze specifiche della tua applicazione.
La directory Http
La directory Http contiene i tuoi controller, middleware e richieste di form. 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 per te se esegui il comando make:job di Artisan. La directory Jobs ospita i lavori accodati dalla tua applicazione o eseguiti in modo sincrono all’interno del ciclo di vita della richiesta corrente. I job che vengono eseguiti in modo sincrono durante la richiesta corrente vengono talvolta chiamati “comandi”, poiché rappresentano un’implementazione del pattern command.
La directory Listeners
Questa directory non esiste di default, ma verrà creata per te se esegui i comandi Artisan event:generate o make:listener. La directory Listeners contiene le classi che gestiscono i tuoi eventi. I listener degli eventi ricevono un’istanza dell’evento e eseguono la logica in risposta all’evento che viene scatenato. Ad esempio, un evento UserRegistered potrebbe essere gestito da un listener SendWelcomeEmail.
La directory Mail
Questa directory non esiste di default, ma verrà creata per te se esegui il comando Artisan make:mail. La directory Mail contiene tutte le tue classi che rappresentano le email inviate dalla tua applicazione. Gli oggetti Mail ti permettono di incapsulare tutta la logica di costruzione di una email in una singola classe semplice che può essere inviata utilizzando il metodo Mail::send.
La directory Modelli (Models)
La directory Models contiene tutte le tue classi di modello Eloquent. L’ORM Eloquent incluso in Laravel fornisce un’implementazione ActiveRecord semplice e intuitiva per lavorare con il database. Ogni tabella del database ha un corrispondente “Modello” che viene utilizzato per interagire con quella tabella. I modelli ti consentono di eseguire query per recuperare dati dalle tue tabelle e di inserire nuovi record nella tabella.
La directory Notifiche (Notifications)
Questa directory non esiste di default, ma verrà creata per te se esegui il comando Artisan make:notification. La directory Notifications contiene tutte le notifiche “transazionali” inviate dalla tua applicazione, come semplici notifiche sugli eventi che si verificano all’interno dell’applicazione. La funzionalità di notifica di Laravel astrae l’invio delle notifiche su diversi driver come email, Slack, SMS o salvate in un database.
La directory Politiche (Policies)
Questa directory non esiste per impostazione predefinita, ma verrà creata per te se esegui il comando Artisan make:policy. La directory Policies contiene le classi di politiche di autorizzazione per la tua applicazione. Le politiche vengono utilizzate per determinare se un utente può eseguire una determinata azione su una risorsa specifica.
La directory Providers
La directory Providers contiene tutti i provider di servizi per la tua applicazione. I provider di servizi avviano la tua applicazione associando i servizi nel container dei servizi, registrando eventi o eseguendo altre attività per preparare la tua applicazione per le richieste in arrivo.
In una nuova applicazione Laravel, questa directory conterrà già diversi provider. Se necessario, sei libero di aggiungere i tuoi provider a questa directory secondo le tue esigenze..
La directory Regole (Rules)
Questa directory non esiste di default, ma verrà creata per te se esegui il comando Artisan make:rule. La directory Rules contiene gli oggetti delle regole di validazione personalizzate per la tua applicazione. Le regole vengono utilizzate per incapsulare logiche di validazione complesse in un oggetto semplice. Per ulteriori informazioni, consulta la documentazione sulla validazione.