Lo sviluppo di applicazioni e siti web è diventato sempre più semplice negli ultimi anni. Anche i più tecnologicamente sfiduciati tra noi sono diventati abbastanza abili con prodotti come WordPress e Wix.

Per chi si occupa di sviluppo in modo più avanzato, esiste una serie di strumenti che aiutano a semplificare il processo di sviluppo. Uno dei più utili è Laravel.

Questo articolo risponde alla domanda “Cos’è Laravel?” suddividendolo in una panoramica delle basi dei framework PHP usati nello sviluppo web. Seguirà una panoramica delle caratteristiche di Laravel, un elenco delle strutture e dei componenti importanti di Laravel, e una descrizione di alcuni dei pacchetti Laravel più utili.

Cos’È Laravel?

La risposta alla domanda “Che cos’è Laravel?” è semplice: Laravel è un framework PHP multipiattaforma per costruire applicazioni web.

Ma comprendere veramente i benefici di Laravel e i suoi usi richiede un approfondimento. Laravel permette a chi sviluppa di approfittare di una grande libreria di funzionalità pre-programmate (come l’autenticazione, il routing, e il template HTML). L’accesso a questa libreria facilita la costruzione di applicazioni web robuste, riducendo al minimo la quantità di programmazione necessaria.

Laravel offre un ambiente di sviluppo altamente funzionale, così come interfacce a riga di comando intuitive ed espressive. Inoltre, Laravel usa la mappatura oggetto-relazionale (object-relational mapping o ORM) per semplificare l’accesso e la manipolazione dei dati.

Le applicazioni Laravel sono altamente scalabili e le loro basi di codice sono facili da mantenere. Gli sviluppatori possono anche aggiungere senza problemi funzionalità alle loro applicazioni, grazie al sistema di packaging modulare di Laravel e alla robusta gestione delle dependency.

.

Laravel È Front-end o Back-end?

Laravel è principalmente un framework di sviluppo back-end, anche se offre alcune funzionalità front-end. Molte delle caratteristiche di Laravel, tuttavia, non sono specifiche per il front-end.

Laravel È un Linguaggio di Programmazione?

Laravel è un framework PHP e usa un linguaggio di scripting piuttosto che essere un linguaggio di programmazione PHP. Anche se i linguaggi di scripting e i linguaggi di programmazione sono correlati, presentano diverse differenze evidenti, principalmente nella facilità d’uso e nella velocità di esecuzione.

I linguaggi di scripting sono linguaggi interpretati specifici della piattaforma. Al contrario, i linguaggi di programmazione sono linguaggi compilati e indipendenti dalla piattaforma. Essendo specifici per una determinata piattaforma, i linguaggi di scripting dipendono dal compiler dell’applicazione in cui lavorano.

Le applicazioni costruite con linguaggi di scripting sono compilate in fase di esecuzione, il che significa che ogni istruzione è interpretata individualmente nel momento dell’esecuzione, rendendo l’applicazione più lenta di un’applicazione precompilata. La compilazione in fase di esecuzione implica anche che l’applicazione si ferma o si spegne se incontra un errore durante il runtime; al contrario, le applicazioni precompilate eseguono il controllo degli errori durante la compilazione, e per questo sono più robuste in fase di esecuzione. Per molti utenti, però, gli svantaggi dei linguaggi di scripting sono più che compensati dalla loro facilità d’uso e di iterazione.

Cos’È un Framework PHP?

PHP (acronimo ricorsivo di PHP Hypertext Preprocessor) è un linguaggio di scripting open source, lato server, ampiamente utilizzato per lo sviluppo web. All’inizio del 2021, quasi l’80% di tutti i siti web usano PHP. Anche se molte persone potrebbero non avere familiarità con PHP, è forse più comune avere familiarità con una delle applicazioni PHP più conosciute: WordPress.

Un framework PHP fornisce un insieme di librerie di codice contenenti moduli pre-programmati che permettono all’utente di costruire applicazioni più velocemente. Offrono agli sviluppatori web una serie di benefici, tra cui uno sviluppo più rapido, una ridotta necessità di scrivere codice e una maggiore sicurezza. Aiutano anche gli sviluppatori principianti a costruire buone pratiche di programmazione, poiché richiedono un’organizzazione specifica del codice. Inoltre, i framework PHP richiedono in genere meno manutenzione delle applicazioni costruite da zero.

Molti framework PHP moderni sono orientati agli oggetti. Per questo motivo, è utile avere una comprensione di base di concetti come classi, oggetti ed ereditarietà prima di immergersi in un framework.

Un diagramma MVC. (Fonte: Wikipedia)
Un diagramma MVC. (Fonte: Wikipedia)

I framework PHP usano un’architettura Model-View-Controller (MVC). Per coloro che non hanno familiarità con l’architettura MVC, la parola Model si riferisce ai dati dell’applicazione, insieme a tutta la logica associata. Una tabella di persone abbonate a un servizio, per esempio, può essere un modello. La parola View invece fornisce un punto di interazione con un utente, dove i dati del modello possono essere visualizzati e modificati. Il Controller è un condotto tra la View e il Model. In altre parole, il Controller prende le richieste dell’utente, recupera le informazioni necessarie dal modello, le elabora e le restituisce per la visualizzazione (View).

Le applicazioni PHP, come WordPress, hanno alcune vulnerabilità note. Gli esempi più notevoli sono l’iniezione di codice e l’iniezione SQL. Laravel include caratteristiche che aiutano a prevenire l’SQL injection e altri attacchi.

Tuttavia, se vi occupate di sviluppo dovreste intraprendere anche altre azioni, come i penetration test, per garantire la sicurezza delle vostre applicazioni. Secondo Barbara Ericson, esperta IT di Cloud Defense, la sicurezza delle applicazioni web consiste in penetration test e firewall per applicazioni web, che vanno di pari passo.

I penetration test sono intesi come test più complessi eseguiti da professionisti qualificati della sicurezza informatica, che tenteranno di penetrare nel vostro sistema senza alcuna conoscenza preliminare del suo sviluppo al fine di identificare le vulnerabilità di sicurezza che non hanno ancora un patch.

Perché Dovreste Usare Laravel?

Avendo risposto a “Cos’è Laravel?”, la prossima domanda è: “Perché Laravel?” Laravel fornisce un ampio set di strumenti robusti che aiuta a rendere il processo di sviluppo delle applicazioni web più facile e veloce, e i codici delle applicazioni finali sono ben strutturati e facilmente mantenuti.

Alcuni dei benefici specifici di Laravel sono:

Laravel È Facile da Imparare

Laravel è relativamente facile da imparare, avendo il giusto background. Per un uso efficace, Laravel richiede una comprensione generale di PHP e dei concetti di programmazione orientata agli oggetti (OOP). È utile anche conoscere almeno un po’ di HTML. E per qualsiasi architettura MVC, è anche utile comprendere i sistemi di gestione di database relazionali, come MySQL o PostgreSQL.

Laravel Semplifica il Processo di Sviluppo

Fin dall’inizio, Laravel è stato progettato per semplificare i compiti che sono comuni in una varietà di progetti di sviluppo web come il routing, l’autenticazione, la migrazione, il caching e altro. Laravel semplifica l’integrazione di moduli pre-costituiti in un’applicazione, utilizzando interfacce a riga di comando intuitive ed espressive e Composer.

Laravel offre anche una vasta raccolta di documentazione online, che è un buon punto di partenza per le persone più esperte di sviluppo. È disponibile anche un’ampia varietà di risorse di apprendimento online dirette a tutti i livelli di conoscenza.

Laravel Offre Strumenti di Sviluppo per Utenti di Ogni Livello

Laravel si descrive come un framework progressivo, il che significa che include una varietà di funzionalità che gli utenti di tutti i livelli troveranno utili. Per esempio, i principianti hanno accesso a starter kit per moduli come le funzioni di autenticazione di base. Più avanti discuteremo molti di questi strumenti in maggior dettaglio.

Struttura del progetto Laravel. (Fonte: ITSolutionStuff.com)
Struttura del progetto Laravel. (Fonte: ITSolutionStuff.com)

Gli utenti più esperti possono trarre vantaggio della tecnologia sottostante agli starter kit per costruire i propri processi di autenticazione e integrarli con i loro front-end preferiti.

Laravel È Altamente Scalabile

Laravel è altamente scalabile. Con il supporto integrato per sistemi di cache veloci e distribuiti, le applicazioni Laravel sono in grado di affrontare milioni di richieste al mese. Laravel offre anche una piattaforma di implementazione serverless, chiamata Vapor, che è basata su AWS e fornisce un alto grado di scalabilità.

Laravel Offre un Ecosistema e una Comunità Enormi

Laravel ha un enorme ecosistema supportato da una grande comunità di sviluppatori. Poiché Laravel è uno dei framework PHP più utilizzati, la libreria di applicazioni e pacchetti Laravel disponibili è notevole. Sia i pacchetti ufficiali di Laravel che quelli di terze parti sono facilmente disponibili.

I pacchetti ufficiali di Laravel (molti dei quali discuteremo qui di seguito) includono l’autenticazione, la gestione del server, la fatturazione degli abbonamenti, il test e l’automazione del browser e altro ancora. Sono disponibili pacchetti di terze parti su un certo numero di siti, tra cui Packalyst e Laravel News.

C’è anche un’enorme quantità di informazione che arriva dalla comunità di sviluppo Laravel. Se vi occupate di sviluppo e avete delle domande, troverete senza dubbio una risposta in uno dei molti forum di Laravel, come Laravel.io, The Laravel subreddit, e Laracasts.

Laravel È Molto Usato

Molte aziende usano Laravel per costruire siti web altamente funzionali:

Vacations by Rail è un sito di pianificazione di viaggi in treno costruito utilizzando il framework PHP Laravel. È anche integrato con il motore di prenotazione di Softrip.

Vacations by Rail usa Laravel.
Vacations by Rail usa Laravel.

Anche il sito Setapp di applicazioni curate per Mac e iOS è costruito con il framework PHP Laravel.

SetApp è costruito con Laravel.
SetApp è costruito con Laravel.

L’applicazione per la ricerca di ristoranti Restaurants.com è molto intuitiva da usare, grazie al fatto che è costruita usando i modelli di app mobile Laravel.

Restaurants.com è alimentato da Laravel.
Restaurants.com è alimentato da Laravel.

Cosa Fa Laravel?

Il set di caratteristiche di Laravel è troppo esteso per poter essere spiegato estensivamente in questa breve panoramica. Alcune delle caratteristiche più significative includono:

Gestione delle Routes

Laravel fornisce una gestione delle routes semplice e intuitiva; usa nomi semplici per identificarle invece che nomi lunghi. L’uso di identificatori di route rende anche più facile la manutenzione delle applicazioni, dato che il nome della route può essere cambiato in un posto invece che doverlo cambiare dappertutto. Tutti le routes dell’interfaccia web in un’applicazione Laravel sono registrate nel file routes/web.php.

Sicurezza

Laravel include una serie di caratteristiche di sicurezza tra cui l’autenticazione degli utenti, le autorizzazioni dei ruoli degli utenti, la verifica delle email, i servizi di crittografia, l’hashing delle password e le funzioni di reset delle password.

Migrazione

Laravel fornisce il controllo di versione per i database delle applicazioni usando le migrazioni. Le migrazioni tengono traccia di come un database è stato modificato nel tempo, rendendo più facile distruggere o ricreare il database quando necessario.

Templating

Blade è il motore di template PHP di Laravel. I motori di template PHP aiutano a dividere la logica di business dai template HTML: il risultato è una base di codice più facilmente da mantenere. Molte delle caratteristiche di Laravel si basano sui template di Blade. Blade offre più funzionalità di altri motori di template perché permette l’uso di semplice codice PHP, cosa che altri non fanno.

Sessioni

Laravel usa le sessioni per memorizzare informazioni sull’utente attraverso diverse richieste. I cookie sono un esempio di un driver di sessione incorporato in Laravel.

Convalida dei Dati

Laravel semplifica la convalida dei dati utente in entrata e include una serie di regole di convalida dei dati, con messaggi di errore personalizzabili.

Gestione della Cache

Laravel supporta il caching dei dati per ridurre al minimo i tempi di elaborazione delle attività dell’applicazione. L’API di cache di Laravel supporta molte cache back-end di terze parti come Memcached e Redis.

Gestione degli Errori

La gestione degli errori è configurata automaticamente all’avvio di un nuovo progetto Laravel. Le applicazioni Laravel possono essere eseguite in modalità debug, generando messaggi di errore dettagliati per tutti gli errori che si verificano.

Test

Laravel offre sostanziali misure di testing: supporta lo unit testing, che testa piccole sezioni isolate del codice dell’applicazione, ma anche il feature testing, che testa sezioni più grandi di codice e funzionalità di livello superiore.

Archiviazione e Gestione dei File

Laravel usa il pacchetto Flysystem PHP per fornire i driver che lavorano con filesystem diversi, dai filesystem locali allo storage basato su cloud come Amazon S3. Laravel offre anche il trasferimento di file con SSH File Transfer Protocol (SFTP).

Email

Laravel include un’API di posta elettronica basata sulla libreria SwiftMailer, che permette di inviare email attraverso un servizio a scelta. Supporta gli allegati e il queuing di email.

Notifiche

Laravel supporta l’invio di notifiche su un certo numero di canali, sia ben noti come SMS o Slack, sia canali sviluppati dalla comunità Laravel.

Come Funziona Laravel?

Per comprendere al meglio cosa può fare Laravel, è importante capire come tratta le richieste, cioè il ciclo di vita della richiesta. Come discusso in precedenza, Laravel è basato sull’architettura MVC, e risponde alle richieste degli utenti, che il controller utilizza per recuperare ed elaborare i dati dal modello per poi presentare le informazioni all’utente nella View.

Una richiesta entra in un’applicazione Laravel attraverso il file public/index.php, che carica il resto del framework e recupera un’istanza dell’applicazione Laravel. Dopo aver recuperato l’istanza dell’applicazione, la richiesta viene indirizzata al kernel della console o al kernel HTTP.

Tra gli altri compiti, il kernel definisce una selezione di bootstrapper che eseguono compiti che devono essere completati prima che la gestione delle richieste abbia luogo, così come definisce qualsiasi middleware che le richieste devono attraversare prima della gestione. Tra questi compiti di pre-gestione c’è il caricamento di qualsiasi fornitore di servizi richiesto per l’applicazione.

Una volta che il bootstrapping è completo e i fornitori di servizi sono stati registrati, la richiesta passa al router, che poi indirizza la richiesta a una route o a un controller. Inoltre, il router esegue qualsiasi middleware richiesto specifico per le routes. Dopo che la richiesta passa attraverso tutti i middleware richiesti, l’esecuzione di una routes o di un metodo controller restituisce una risposta che passa di nuovo alla View attraverso la catena.

Come Iniziare con Laravel?

Per iniziare a usare Laravel, è necessario capire alcune delle strutture e funzionalità più importanti del framework.

Service Containers

Il service container è uno dei componenti principali di Laravel. I service container gestiscono le dependency delle classi e la dependency injection.

Service container Laravel. (Fonte: Christopher Rumpel)
Service container Laravel. (Fonte: Christopher Rumpel)

I service container sono il punto in cui uno sviluppatore unisce tutto il necessario per eseguire un’applicazione Laravel.

Service Provider

Altrettanto importanti sono i service provider Laravel, cioè il punto in cui le classi e le dependency vengono iniettate nei service container.

Facades

Una facade è un’interfaccia statica per le classi integrata nel service container. Le facades forniscono una sintassi facilmente memorizzabile come proxy per le classi con un nome lungo.

Packages

I packages sono il modo in cui le funzionalità vengono aggiunte a Laravel. Ci sono sia packages stand-alone che packages specifici per le applicazioni. I service provider dicono a Laravel dove caricare le risorse dei packages.

Laravel, come molti altri strumenti di sviluppo locale, si basa su Docker. Docker è uno strumento basato su container che permette agli sviluppatori di creare e distribuire più facilmente le loro applicazioni. Usando i container Docker, uno sviluppatore impacchetta la sua applicazione con le sue dependency e la distribuisce come un singolo package.

Interfacce a Riga di Comando

Laravel include una serie di interfacce a riga di comando (CLI). L’Artisan Console include comandi che aiutano gli sviluppatori a costruire rapidamente lo scheletro del codice, a semplificare e automatizzare i compiti ripetitivi e a completare più facilmente la costruzione di un’applicazione. Sail è un’interfaccia a riga di comando più leggera introdotta in Laravel 8: permette a chi sviluppa di interagire con Docker, l’ambiente di sviluppo predefinito di Laravel.

Laravel Artisan CLI. (Fonte: tutorialspoint.com)
Laravel Artisan CLI. (Fonte: tutorialspoint.com)

Eloquent

Eloquent è un object-relational mapper (ORM) che permette una facile interazione con i database. Usando l’architettura MVC, i modelli corrispondono alle singole tabelle in un database. Con Eloquent, gli sviluppatori possono assicurarsi un recupero veloce, semplici inserimenti e aggiornamenti, e una definizione intuitiva delle relazioni.

Composer

Composer è uno strumento di terze parti per la gestione delle dependency di PHP a livello di applicazione. Composer gestisce le librerie, i moduli e i plugin richiesti da un’applicazione Laravel.

Homestead

Laravel Homestead è un ambiente di sviluppo che permette di lavorare su una macchina virtuale fornendo una box Vagrant preconfezionata. Homestead include tutto il necessario per lo sviluppo di applicazioni Laravel, compresi PHP, MySQL, Nginx, Composer, Redis e molto altro, quindi non avete bisogno di installare questi packages sulla vostra macchina locale. Homestead richiede l’installazione di Vagrant e VirtualBox o Parallels.

Starter Kit di Autenticazione

Laravel include un certo numero di packages per aiutare chi sviluppa a diventare rapidamente operativo. Prima di approfondire, potreste voler rivedere alcune delle molte risorse disponibili per imparare Laravel. Laravel include un paio di starter kit che vi aiutano a implementare rapidamente le funzionalità più comuni.

Laravel Breeze è uno starter kit di autenticazione. Include funzioni comuni di autenticazione e account utente come la registrazione dell’utente, il login, la verifica dell’email, la conferma e la reimpostazione della password. Breeze include anche un front-end javascript attraverso Vue. Breeze ha un livello di visualizzazione predefinito che usa i modelli Blade e i CSS Tailwind.

Per caratteristiche di autenticazione più avanzate, Laravel ora offre Jetstream, introdotto per la prima volta nella versione 8. Oltre alle caratteristiche che si trovano in Breeze, Jetstream offre anche ulteriori caratteristiche avanzate come l’autenticazione a due fattori, la gestione delle sessioni, il supporto API tramite Laravel Sanctum e la gestione opzionale del team.

Per gli sviluppatori che preferiscono usare il proprio front-end di autenticazione, Laravel offre Fortify, un back-end di autenticazione che è front-end agnostic. Fortify è il motore per lo starter kit di autenticazione Jetstream e include tutte le funzionalità di autenticazione di Laravel (per esempio registrazione utente, login, verifica email, autenticazione a due fattori, ecc.). Fortify non è il motore che sta dietro a Laravel Breeze.

Laravel offre anche l’autenticazione basata sui social media (OAuth) grazie a Laravel Socialite.

Se volete distribuire le vostre applicazioni con una configurazione minima del server o, in effetti, volete proprio una distribuzione senza server, Laravel offre Forge e Vapor. Forge permette il deployment attraverso una varietà di fornitori di infrastrutture con sforzi minimi di configurazione. Vapor è una piattaforma di distribuzione serverless basata su AWS.

Se volete fare il passo successivo, potete distribuire le vostre applicazioni Laravel attraverso il vostro sito web auto-ospitato. Questo perché auto-ospitare il vostro sito web richiederà di impostare diversi database definiti con un singolo comando PHP (usando l’ultima versione) e l’accesso SSH al server. Laravel offre entrambi in un framework PHP open-source, e come bonus aggiuntivo, è abbastanza facile da installare.

Cos’Altro Può Fare Laravel?

La domanda migliore potrebbe essere: “Cosa non può fare Laravel? Esistono migliaia di packages che realizzano qualsiasi funzione. Alcuni tra i packages ufficiali di Laravel più interessanti sono:

Cashier e Spark

Laravel Cashier fornisce un’interfaccia per i servizi di fatturazione degli abbonamenti di Stripe e Paddle. Cashier fornisce anche funzionalità avanzate di abbonamento, come coupon e proroghe per la cancellazione.

Cashier è il motore di Laravel Spark, un pannello di gestione della fatturazione che permette agli utenti di creare e gestire i loro abbonamenti. Spark è anche limitato a Stripe e Paddle come provider di pagamento; i provider personalizzati non sono ancora compatibili con Spark. Spark, tuttavia, permette allo sviluppatore di scegliere il proprio front-end.

Valet

Laravel Valet è un ambiente di sviluppo per macOS focalizzato sulla velocità e su un uso minimo delle risorse (circa 7 MB di RAM). Valet non vuole essere un sostituto completo di Sail o Homestead. È invece pensato per gli utenti con esigenze specifiche e risorse limitate.

Per altri packages, date un’occhiata al sito web di Laravel o a Packalyst.

Laravel nel 2024

La versione attuale di Laravel è la versione 8, rilasciata inizialmente a febbraio 2022. Questa versione include una serie di nuove caratteristiche e miglioramenti. Alcune delle nuove caratteristiche della versione 8 includono Laravel Jetstream, job batching (permette l’esecuzione di un batch di operazioni, seguito dall’esecuzione di azioni definite), componenti Dynamic Blade (permette il rendering dei componenti runtime basato su un valore runtime), e l’uso di Tailwind CSS, incluso di default nel paginator di Laravel. Sono stati apportati miglioramenti anche al rate limiting e alla modalità di manutenzione.

In passato, i nuovi rilasci di Laravel avvenivano ogni sei mesi. Tuttavia, ciò ha generato molte domande, commenti e confusione sul nuovo processo di rilascio di Laravel. Con il rilascio di Laravel 9 nel febbraio 2022, il framework è passato a un ciclo di major release di 12 mesi.

Riepilogo

Coloro che cercano uno sviluppo di applicazioni web semplice e veloce dovrebbero prendere in considerazione di imparare Laravel. Laravel fornisce un ampio e robusto set di risorse che semplifica il processo di sviluppo eliminando la necessità di codificare molti compiti comuni da zero.

Laravel fornisce anche un ambiente di sviluppo virtuale sicuro e interfacce a riga di comando intuitive. E visto che è semplice da imparare e si affida a un ecosistema e a una comunità di supporto molto solidi, è una scelta naturale per molti sviluppatori, siano essi principianti o esperti con anni di esperienza.