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 comando php 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.

Lascia un commento

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *