# Laravel

Laravel è un framework open source di tipo MVC scritto in PHP per lo sviluppo di applicazioni web, creato nel 2011 da Taylor Otwell come derivazione di Symfony.
Distribuito con licenza MIT, mantiene tutto il codice disponibile su GitHub e viene indicato, in base al punteggio GitHub e StackOverflow, come il framework PHP più popolare, seguito da Symfony, CodeIgniter e altri; ad agosto 2014 risulta essere il progetto PHP più seguito su GitHub.
Alcune delle caratteristiche sono: un sistema di gestione dei pacchetti modulare con un gestore delle dipendenze dedicato, differenti modalità di accesso ai database relazionali, strumenti che aiutano la distribuzione e la manutenzione dell'applicazione, e la sua disposizione al syntactic sugar.

## Storia

Taylor Otwell creò Laravel nel tentativo di fornire delle alternative avanzate al framework CodeIgniter sprovvisto di alcune caratteristiche integrate, quali il supporto all'autenticazione e all'autorizzazione dell'utente. La prima versione beta di Laravel fu rilasciata il 9 Giugno 2011, seguito dalla versione 1 nello stesso mese. Laravel 1 integra il supporto all'autenticazione, localizzazione, modelli, viste, sessioni, routing e altri meccanismi, ma senza il supporto dei controller che gli impedivano di essere un vero e proprio framework MVC.
Laravel 2 fu rilasciato nel Settembre 2011, fornendo numerosi miglioramenti dallo sviluppatore e dalla comunità. Le caratteristiche principali includono il supporto a controller, rendendo Laravel 2 un framework MVC a tutti gli effetti, inversione del controllo (IoC) e al sistema di templating Blade. Come svantaggio, viene rimosso il supporto ai pacchetti di terze parti.
Laravel 3 fu rilasciato nel Febbraio 2012 con un set di nuove caratteristiche includendo l'interfaccia a riga di comando (CLI) chiamata Artisan, il supporto integrato a numerosi database management systems (DBMS), migrazioni del database, una sorta di controllo versione per la struttura del database, supporto alla gestione degli eventi e ad un sistema di gestione dei pacchetti chiamato Bundles. Questa versione portò ad un incremento della popolarità di Laravel tra gli utenti. Fino ad oggi sono stati realizzati più di 1.723.068 siti web utilizzando Laravel, di cui circa 743.470 sono ancora attivi.
Laravel 4, denominato Illuminate, fu rilasciato a Maggio 2013. C'è stata una completa riscrittura del framework, migrando il suo layout da un'architettura monolitica a un sistema di pacchetti separati, distribuiti tramite Composer, un sistema di gestione di pacchetti. Il nuovo layout di Laravel 4 ha migliorato la sua estendibilità accompagnando un programma ufficiale di rilasci ogni 6 mesi intervallati da minor point release. Altre caratteristiche includono il seeding del database per la popolazione iniziale dei database, il supporto alle code, a differenti tipi di email e al supporto del soft delete dei record del database.
Laravel 5 fu rilasciato nel Febbraio 2015 come risultato di un cambiamento interno portando alla rinumerazione di quella che sarebbe dovuta essere la release 4.3. Le nuove caratteristiche di Laravel 5 includono: supporto alla schedulazione periodica dei task, un livello di astrazione dei file system tramite la libreria Flysystem che consente di interagire con sistemi di archiviazione remoti in maniera trasparente come nel caso di archiviazione locale, miglioramento della gestione degli assets frontend tramite Elixir e il supporto semplificato all'autenticazione tramite il pacchetto Socialite. Laravel 5, introduce inoltre, una riorganizzazione della struttura delle cartelle del progetto.
Laravel 5.1 (LTS) fu rilasciato nel Giugno 2015 e fu la prima release a ricevere il supporto a lungo termine (Long Term Support - LTS). Nuove versioni LTS sono pianificate ogni due anni.
Laravel 5.3 fu rilasciato il 23 Agosto 2016. Le nuove caratteristiche della 5.3 sono improntate al miglioramento della velocità di sviluppo tramite l'aggiunta di ulteriori miglioramenti per le comuni attività.
Laravel 5.4 fu rilasciato il 24 Gennaio 2017 con moltissime nuove caratteristiche quali Laravel Dusk, Laravel Mix, componenti e slot Blade, markdown nelle email, Facade automatiche, miglioramenti delle rotte, Higher Order Messaging per le collezioni e tanto altro.
Laravel 6 (LTS) fu rilasciato il 3 Settembre 2019. Le caratteristiche di questa versione sono: il Semantic Versioning, compatibilità con Laravel Vapor, migliorato il sistema di authorization responses, job middleware, lazy collections, miglioramenti all'utilizzo delle sub-query e tanto altro.
Laravel 7 fu rilasciato il 3 Marzo 2020 introducendo: Laravel Sanctum (ex Airlock) (autenticazione per SPA), velocità delle rotte migliorata, cast Eloquent personalizzati, componenti Blade da utilizzare come tag, operazioni sulle stringhe più veloce, un client HTTP per sviluppatori, supporto first-party al CORS, migliorato lo scoping delle rotte con il binding dei modelli, personalizzazione degli stub, miglioramenti alle code del database, driver mail multipli, cast in tempo reale nelle query, un nuovo comando artisan test e molti bug fix e miglioramenti.
Laravel 8 fu rilasciato l'8 Settembre 2020 e continua i miglioramenti fatti in Laravel 7 introducendo Laravel Jetstream, classi model factory, squashing delle migrazioni, job batching, rate limiting migliorato, miglioramenti alle code, componenti Blade dinamici, nuovo stile di paginazione in Tailwind, helper per i test del tempo, miglioramenti al comando artisan serve, miglioramenti agli event listener, e una varietà di altri bug fix e miglioramenti dell'usabilità.
Laravel 9 fu rilasciato l'8 Febbraio 2022 includendo il supporto minimo a PHP 8, gruppi di rotte per i controller, una pagina di errore migliorata, il driver database per Laravel Scout, nuova gestione delle mail tramite Synfony Mailer, Flysystem 3.x, miglioramenti alla gestione degli accessors/mutators di Eloquent e molti altri miglioramenti.

## Release

Le versioni LTS sono supportate con bug fix per 2 anni e security fix per 3 anni. Le altre versioni sono supportate con bug fix per 18 mesi e security fix per 2 anni.
| Versione | Data di rilascio | Versione PHP | Bug fix fino al | Security fix fino al |
| 1.0 | Giugno 2011 | | | |
| 2.0 | Settembre 2011 | | | |
| 3.0 | 22 Febbraio 2012 | | | |
| 3.1 | 27 Marzo 2012 | | | |
| 3.2 | 22 Maggio 2012 | | | |
| 4.0 | 28 Maggio 2013 | ≥ 5.3.0 | | |
| 4.1 | 12 Dicembre 2013 | ≥ 5.3.0 | | |
| 4.2 | 1 Giugno 2014 | ≥ 5.4.0 | | |
| 5.0 | 4 Febbraio 2015 | ≥ 5.4.0 | 4 Agosto 2015 | 4 Febbraio 2016 |
| 5.1 (LTS) | 9 Giugno 2015 | ≥ 5.5.9 | 9 Giugno 2017 | 9 Giugno 2018 |
| 5.2 | 21 Dicembre 2015 | ≥ 5.5.9 | 21 Giugno 2016 | 21 Dicembre 2016 |
| 5.3 | 23 Agosto 2016 | ≥ 5.6.4 | 23 Febbraio 2017 | 23 Agosto 2017 |
| 5.4 | 24 Gennaio 2017 | ≥ 5.6.4 | 24 Luglio 2017 | 24 Gennaio 2018 |
| 5.5 (LTS) | 30 Agosto 2017 | ≥ 7.0.0 | 30 Agosto 2019 | 30 Agosto 2020 |
| 5.6 | 7 Febbraio 2018 | ≥ 7.1.3 | 7 Agosto 2018 | 7 Febbraio 2019 |
| 5.7 | 4 Settembre 2018 | ≥ 7.1.3 | 4 Marzo 2019 | 4 Settembre 2019 |
| 5.8 | 26 Febbraio 2019 | ≥ 7.1.3 | 26 Agosto 2019 | 26 Febbraio 2020 |
| 6 (LTS) | 3 Settembre 2019 | ≥ 7.2.0 | 25 Gennaio 2022 | 6 Settembre 2022 |
| 7 | 3 Marzo 2020 | ≥ 7.2.5 | 6 Ottobre 2020 | 3 Marzo 2021 |
| 8 | 8 Settembre 2020 | ≥ 7.3 | 26 Luglio 2022 | 24 Gennaio 2023 |
| 9 | 8 Febbraio 2022 | ≥ 8.0 | 8 Agosto 2024 | 6 Febbraio 2024 |
| 10 | 7 Febbraio 2023 | ≥ 8.1 | 6 Agosto 2024 | 4 Febbraio 2025 |
| 11 | 12 Marzo 2024 | ≥ 8.2 | 5 Agosto 2025 | 3 Febbraio 2026 |
| 12 | Q1 2025 | ≥ 8.2 | Q3 2026 | Q1 2027 |
| Legenda | Vecchia versione, nessun supporto | Vecchia versione, ancora supportata | Versione corrente | Versione futura |