Guida Laravel

Laravel è un framework PHP open-source progettato per lo sviluppo di applicazioni web. Creato da Taylor Otwell e rilasciato nel giugno del 2011, è oggi uno dei framework PHP più utilizzati al mondo. Per comprendere il successo di Laravel, è utile fare un passo indietro e vedere come si evolverano i framework nel mondo dello sviluppo software, anche al di fuori dell'ecosistema PHP.
Un esempio interessante è Spring Boot, un framework Java che ha guadagnato un'enorme popolarità grazie alla sua capacità di semplificare lo sviluppo di applicazioni Java moderne. Come Laravel per PHP, Spring Boot ha introdotto concetti innovativi che hanno semplificato la configurazione e il deployment delle applicazioni, riducendo il tempo necessario per iniziare a sviluppare e permettendo agli sviluppatori di concentrarsi maggiormente sulle funzionalità. Entrambi questi framework, pur appartenendo a mondi tecnologici differenti, condividono un obiettivo simile: semplificare e velocizzare il processo di sviluppo, migliorando la produttività degli sviluppatori.
Nel contesto PHP, durante l'era di PHP5, i framework più diffusi erano principalmente tre:
- Zend Framework
- CakePHP
- CodeIgniter
Questi erano gli strumenti più usati per lo sviluppo di applicazioni PHP, ma il panorama stava rapidamente cambiando. In questo contesto, nel 2005 SensioLabs lanciò Symfony, un framework che segnò una vera e propria rivoluzione. Symfony fu il primo framework moderno di PHP e introdusse nel linguaggio concetti fondamentali, come il pattern MVC (Model-View-Controller), l'ORM (Object-Relational Mapping) e le strutture dati tipiche di Ruby on Rails.
La prima versione stabile di Symfony, la 0.1.0, fu rilasciata il 10 ottobre 2005, seguita dalla versione 1.0 il 30 luglio 2009. Tuttavia, nonostante l'innovazione portata da Symfony, molti sviluppatori continuavano a preferire CodeIgniter. Quest'ultimo, infatti, era noto per la sua semplicità e la potenza delle sue funzionalità, caratteristiche che lo rendevano molto popolare tra i programmatori PHP.
È proprio in questo momento che entra in scena Taylor Otwell, il creatore di Laravel. Otwell aveva in mente di sviluppare un framework che colmasse le lacune di CodeIgniter, aggiungendo funzionalità fondamentali come l'autenticazione e l'autorizzazione, che erano assenti nel framework di CodeIgniter. Laravel iniziò come un progetto secondario nel 2011, ma nel giro di pochi anni crebbe così tanto da diventare un vero e proprio ecosistema, con una compagnia e una community attiva a supportarlo.
Oggi Taylor Otwell è il responsabile dello sviluppo di Laravel, gestendo aspetti come il design, l'architettura, il marketing e la community. È anche un relatore nelle principali conferenze PHP e ha scritto libri su Laravel e sullo sviluppo web in generale. Non è un segreto che Laravel prenda molta ispirazione da Symfony: infatti, si stima che circa il 30% del codice di Laravel provenga da Symfony. Tuttavia, questo è un aspetto naturale, dato che Symfony è un framework altamente modulare e che molte delle sue componenti sono state adattate in pacchetti per Laravel.
Le principali caratteristiche di Laravel
Oltre a prendere ispirazione da Symfony, Laravel ha introdotto numerose caratteristiche che hanno reso il framework estremamente popolare tra gli sviluppatori PHP. Alcuni degli strumenti che Laravel mette a disposizione sono:
- Artisan: una potente CLI (Command Line Interface) che permette di gestire l'applicazione direttamente da terminale.
- Tinker: un ambiente interattivo REPL (Read-Eval-Print Loop) che consente di interagire con le classi di Laravel dal terminale.
- Migrations: uno strumento che permette di versionare lo schema del database, semplificando la gestione delle modifiche.
- Seeders: utilizzati per popolare il database con dati di esempio.
- Requests: per validare i dati immessi dagli utenti nei moduli, garantendo la sicurezza e l'integrità dei dati.
- Eloquent ORM: uno degli ORM più popolari per mappare i dati nel database in modo semplice e intuitivo.
- Composer: il gestore delle dipendenze di PHP che Laravel utilizza per gestire pacchetti e librerie di terze parti.
- Asset Bundling: Laravel gestisce gli asset (CSS, JS, immagini) tramite strumenti come npm, facilitando l'organizzazione e la gestione dei file statici.
Un punto importante da sottolineare è che Laravel non ha inventato questi strumenti, ma li ha resi accessibili e facili da integrare in un'unica soluzione. È vero che molti degli strumenti che Laravel offre (come le Migrations, il REPL di Tinker o l'Artisan CLI) sono già presenti in altri ambienti, come Ruby on Rails o Python, ma Laravel ha avuto il merito di combinare questi strumenti in modo coerente ed efficiente, creando un framework che permette agli sviluppatori di estendere facilmente le proprie applicazioni.
Il punto di forza di Laravel
La vera forza di Laravel non risiede nell'innovazione degli strumenti, ma nella sua capacità di estendere e personalizzare il framework in maniera semplice e diretta. La possibilità di integrare pacchetti e servizi esterni è uno degli aspetti che ha reso Laravel così popolare. Grazie ai Service Provider, gli sviluppatori possono facilmente integrare librerie o funzionalità aggiuntive, senza compromettere la struttura principale dell'applicazione.
Nel corso degli anni, Laravel ha continuato a evolversi, aggiungendo nuove funzionalità e migliorando quelle esistenti. Laravel rimane uno dei framework PHP più completi e versatili, e se dovessi scegliere un framework per lo sviluppo di applicazioni PHP moderne, non avrei dubbi: Laravel è la scelta migliore.
📚 Capitoli del Tutorial
Nel giugno del 2011 Taylor Otwell ha rilasciato Laravel, un framework PHP open-source per applicazioni web che da allora è diventato il framework PHP più utilizzato. Per capire il successo di Laravel, è importante prima di tutto osservare com'era il panorama delle applicazioni web prima del suo arrivo.
Il modello Model-View-Controller (MVC) nell'ingegneria del software è un modo per dividere il codice in tre sezioni distinte. Il modello ospita i dati e la logica aziendale, la vista gestisce l'interfaccia utente e il controllore funge da mediatore tra i due.
Laravel rappresenta oggi uno dei framework PHP più apprezzati e utilizzati dalla community degli sviluppatori web. La sua elegante sintassi, la robusta architettura MVC e l'ecosistema ricco di strumenti lo rendono la scelta ideale per progetti di qualsiasi dimensione.
Artisan è un'interfaccia a riga di comando inclusa in Laravel che fornisce una serie di comandi per aiutare l'utente nel flusso di sviluppo.È possibile utilizzare Artisan eseguendo il comando "php artisan" dal terminale.
I Service Provider sono il perno del boot in tutte le applicazioni Laravel, di conseguenza rappresentano l’entry point per estendere il framework con funzionalità personalizzate.Tutti i Service Provider sono registrati nel file config/app.php all'interno dell'array providers.Quando un fornitore di servizi viene registrato, Laravel richiama automaticamente il metodo register()...
Nel capitolo precedente, parlando dei Service Provider, abbiamo introdotto l’argomento delle Facades. Nella programmazione orientata agli oggetti, il Facade Pattern consiste nella creazione di un oggetto che serve da interfaccia frontale ad un codice più complesso.Questa definizione può anche soddisfare chi si ferma ai concetti base, ma per noi che vogliamo approfondire non &eg...
I Service Container sono un componente fondamentale del framework Laravel. Il loro scopo è fornire un sistema pratico per iniettare le dipendenze nelle funzionalità.Nell'ingegneria del software, la dependency injection è una tecnica in cui un metodo o una funzione riceve le sue dipendenze (cioè gli oggetti di cui ha bisogno per funzionare) come parametri.
Le migrazioni di Laravel consentono di versionare lo schema del database dell’applicazione e di legarlo in modo indissolubile al resto del software. Detto in maniera più semplice, le migrations sono delle classi di Laravel che, attraverso la Facade Schema, ci permettono di creare e modificare lo schema del database, in qualsiasi ambiente andremo ad installare l’applicazione.In q...
I seeders sono classi che vengono utilizzate per popolare il database con dei dati. È un argomento essenziale quando si fa un refactoring o si ha bisogno di qualche dato per fare degli Unit Tests.In questa lezione vedremo come creare dei dati fittizi, utilizzando la classe Faker di Laravel ma il seeder può essere utilizzato anche per importare i dati da un database già esisten...
Nel contesto di Laravel, i modelli sono collocati nella directory app/Models e, per convenzione, il nome della tabella è al plurale mentre il nome della classe è al singolare. Tuttavia, è possibile superare questa regola impostando la proprietà $table all’interno del modello, garantendo massima flessibilità nella definizione delle entità.
In questa lezione vedremo come usare i Modelli di Eloquent per le operazioni di creazione e aggiornamento nel database.Creazione nuovo recordPer la creazione di un nuovo record abbiamo due opzioni:Istanziare il modello e poi salvare il dato nel databaseSalvare il dato direttamente nel databaseEntrambe le soluzioni sono valide, sarà compito nostro, in un contesto operativo, valutare l’...
Adesso che siamo in grado di utilizzare i metodi base dei modelli di Eloquent, facciamo un piccolo esercizio: generiamo la factory del modello Car e creiamo un seeder per popolare la relativa tabella.
In PHP, non è necessario specificare il tipo di dato di una variabile quando la si dichiara. Il parser PHP lo imposta automaticamente per noi. Tuttavia, il tipo di dato può essere convertito in un altro.
Come abbiamo visto nelle lezioni precedenti, uno dei componenti chiave di Laravel è Eloquent, che consente agli sviluppatori di creare modelli che rappresentano diversi tipi di dati all'interno dell'applicazione.
I middleware forniscono un comodo meccanismo per gestire le richieste HTTP che arrivano alla nostra applicazione. Ad esempio, Laravel include un middleware che verifica se l'utente è autenticato e in caso negativo, lo reindirizza alla schermata di login.Lo stack middleware è costruito intorno al componente Illuminate\Contracts\Http\Kernel di Laravel che fornisce un potente sistem...