Ciclo di vita

Introduzione

Quando devi usare uno strumento nel lavoro di tutti i giorni, ti senti più sicuro se capisci come funziona. Giusto? Beh, lo sviluppo di applicazioni non è diverso. Quando comprendi come funzionano i tuoi strumenti di sviluppo, ti senti più a tuo agio e sicuro nel usarli.

L’obiettivo di questo documento è darti una panoramica chiara e generale su come funziona il framework Laravel. Conoscendo meglio l’intero framework, tutto sembra meno "magico" e sarai più sicuro nella creazione delle tue applicazioni. Se non capisci subito tutti i termini, non scoraggiarti! Cerca di afferrare le basi di ciò che sta succedendo e le tue conoscenze cresceranno esplorando le altre sezioni della documentazione.

Panoramica del Ciclo di Vita

Primi Passi

Il punto di ingresso per tutte le richieste a un’applicazione Laravel è il file public/index.php. Tutte le richieste vengono indirizzate a questo file dalla configurazione del tuo server web (Apache/Nginx). Il file index.php non contiene molto codice. Più che altro, è un punto di partenza per caricare il resto del framework.

Il file index.php carica la definizione dell’autoloader generato da Composer e poi recupera un’istanza dell’applicazione Laravel da bootstrap/app.php. La prima azione intrapresa da Laravel stesso è creare un’istanza dell’applicazione / service container.

HTTP / Console Kernel

Successivamente, la richiesta in arrivo viene inviata al kernel HTTP o al kernel console, utilizzando i metodi handleRequest o handleCommand dell’istanza dell’applicazione, a seconda del tipo di richiesta che entra nell’applicazione. Questi due kernel fungono da punto centrale attraverso il quale fluiscono tutte le richieste. Per ora, concentriamoci solo sul kernel HTTP, che è un’istanza di Illuminate\Foundation\Http\Kernel.

Il kernel HTTP definisce un array di bootstrappers che verranno eseguiti prima che la richiesta venga eseguita. Questi bootstrappers configurano la gestione degli errori, configurano il logging, rilevano l’ambiente dell’applicazione e svolgono altre attività che devono essere fatte prima che la richiesta venga effettivamente gestita. Tipicamente, queste classi gestiscono la configurazione interna di Laravel di cui non devi preoccuparti.

Il kernel HTTP è anche responsabile di far passare la richiesta attraverso lo stack di middleware dell’applicazione. Questi middleware gestiscono la lettura e la scrittura della sessione HTTP, determinano se l’applicazione è in modalità manutenzione, verificano il token CSRF e altro ancora. Ne parleremo di più a breve.

La firma del metodo handle del kernel HTTP è abbastanza semplice: riceve una Request e restituisce una Response. Pensa al kernel come a una grande scatola nera che rappresenta tutta la tua applicazione. Inviagli richieste HTTP e restituirà risposte HTTP.

Service Provider

Una delle azioni di bootstrapping più importanti del kernel è caricare i service providers per la tua applicazione. I service provider sono responsabili del bootstrapping di tutti i vari componenti del framework, come i componenti del database, della coda, della validazione e del routing.

Laravel itererà questa lista di provider e istanzierà ciascuno di essi. Dopo aver istanziato i provider, verrà chiamato il metodo register su tutti i provider. Poi, una volta che tutti i provider sono stati registrati, verrà chiamato il metodo boot su ogni provider. Questo permette ai service provider di dipendere dal fatto che ogni binding del container sia registrato e disponibile al momento dell’esecuzione del loro metodo boot.

Praticamente ogni funzionalità principale offerta da Laravel viene avviata e configurata da un service provider. Poiché avviano e configurano così tante funzionalità offerte dal framework, i service provider sono l’aspetto più importante di tutto il processo di bootstrap di Laravel.

Mentre il framework internamente utilizza dozzine di service providers, hai anche l’opzione di crearne di tuoi. Puoi trovare una lista dei service providers definiti dall’utente o di terze parti che la tua applicazione sta usando nel file bootstrap/providers.php.

Routing

Una volta che l’applicazione è stata avviata e tutti i provider di servizi sono stati registrati, la Request sarà passata al router per la gestione. Il router indirizzerà la richiesta a una route o a un controller, oltre ad eseguire eventuali middleware specifici della route.

I middleware forniscono un meccanismo comodo per filtrare o esaminare le richieste HTTP che entrano nella tua applicazione. Ad esempio, Laravel include un middleware che verifica se l’utente della tua applicazione è autenticato. Se l’utente non è autenticato, il middleware reindirizzerà l’utente alla schermata di login. Tuttavia, se l’utente è autenticato, il middleware permetterà alla richiesta di proseguire nell’applicazione. Alcuni middleware sono assegnati a tutte le route all’interno dell’applicazione, come PreventRequestsDuringMaintenance, mentre altri sono assegnati solo a route specifiche o gruppi di route. Puoi saperne di più sui middleware leggendo la documentazione completa sui middleware.

Se la richiesta supera tutti i middleware assegnati alla route corrispondente, verrà eseguito il metodo della route o del controller e la risposta restituita dalla route o dal metodo del controller sarà inviata indietro attraverso la catena di middleware della route.

Conclusione

Una volta che la route o il metodo del controller restituisce una response, la response viaggerà indietro attraverso il middleware della route, dando all’applicazione la possibilità di modificare o esaminare la response in uscita.

Infine, una volta che la response viaggia indietro attraverso il middleware, il metodo handle del kernel HTTP restituisce l’oggetto response a handleRequest dell’istanza dell’applicazione, e questo metodo chiama il metodo send sulla response restituita. Il metodo send invia il contenuto della response al browser web dell’utente. Abbiamo completato il nostro percorso attraverso l’intero ciclo di vita della richiesta di Laravel!

Concentrarsi sui Service Provider

I service provider sono la chiave per l’avvio di un’applicazione Laravel. L’istanza dell’applicazione viene creata, i service provider vengono registrati e la richiesta viene gestita dall’applicazione avviata.

Avere una buona comprensione di come un’applicazione Laravel viene costruita e avviata tramite i service provider è molto utile. I service provider definiti dall’utente della tua applicazione sono memorizzati nella directory app/Providers.

Per impostazione predefinita, l’AppServiceProvider è abbastanza vuoto. Questo provider è un ottimo posto per aggiungere l’avvio personalizzato della tua applicazione e i binding del service container. Per applicazioni di grandi dimensioni, potresti voler creare diversi service provider, ognuno con un avvio più specifico per i servizi particolari utilizzati dalla tua applicazione.

Lascia un commento

Lascia un commento

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