Introduzione a Laravel 5
Laravel è un framework PHP che negli ultimi anni ha avuto un discreto successo. Insieme a Symfony rappresenta una delle soluzioni più consolidate del momento per lo sviluppo di applicazioni Web in PHP.
Qualche mese fa è stata rilasciata la versione 5 di Laravel mentre quella attuale è la 5.1.11 e la minor release 5.1 è stata nominata come Long Time Support. E' la prima volta che una release di Laravel riceve un supporto del genere quindi è opportuno considerare questa versione come il punto di riferimento dei framework PHP per i prossimi anni. La 5.1 segue lo standard PSR-2 che definisce una style guide nella scrittura del codice: i file del framework e tutti i file creati dai generatori di Laravel seguono questo standard e il consiglio degli sviluppatori è quello di mantenere tale convenzione anche per il codice delle proprie applicazioni.
Laravel presenta tutti i canoni dei framework Web moderni: ha una architettura interna basata su MVC (Model-View-Controller), si interfaccia con database relazionali tramite ORM (Object Relational Mapper) e ha un sistema di routing estremamente flessibile e configurabile.
Lumen
Dalla versione 5, gli sviluppatori di Laravel hanno introdotto un nuovo progetto collaterale: Lumen. Quest’ultimo rappresenta un microframework che utilizza alcune caratteristiche di Laravel ma in un contesto più snello e leggero che premia ovviamente le performance. Non tutti i componenti di Laravel sono presenti in Lumen, ma solo i principali. I requisiti software sono praticamente i medesimi. La versione attuale è la 5.1.0 e ricalca le funzionalità della versione 5.1 di Laravel.
API
Laravel incorpora molti componenti di Symfony e li estende in base alle proprie necessità e al proprio pattern di sviluppo. A questo indirizzo sono disponibili le API (Application Programming Interface) e la relativa documentazione. Il namespace di default di tutti i componenti è Illuminate. Tutti i componenti sono a disposizione anche su GitHub, scomposti in diversi progetti ciascuno per ogni macrocategoria.
Gli esempi presenti nella guida
La presente guida prenderà come riferimento la versione completa Laravel. L’applicazione che verrà realizzata sarà un gestionale per biblioteche e i sorgenti verranno rilasciati capitolo per capitolo in modo da offrire le diverse versioni implementate.
Installare Laravel con Composer
Laravel presenta un processo di installazione abbastanza snello basato su Composer e un elenco di requisiti preciso:
- PHP versione 5.5.9 o successive;
- L’estensione PHP OpenSSL per generare e verificare messaggi criptati;
- L’estensione PHP PDO per la persistenza dei dati;
- L’estensione PHP Mbstring per la gestione avanzata delle stringhe;
- L’estensione PHP Tokenizer.
Nonostante sembrino estensioni particolari, esse sono relativamente molto comuni anche negli ambienti hosting più economici.
Composer
Composer si è imposto come standard industriale per gestire le dipendenze in PHP. Prima del suo avvento, il panorama PHP era molto disomogeneo, esistevano moltissime librerie ma trovare quelle più adatte al proprio progetto non era sempre facile, come non lo era l’integrazione in un'applicazione esistente.
Oltre a gestire le dipendenze, Composer permette anche il setup e la generazione di ambienti. Laravel si presenta come un framework altamente interoperabile con Composer, quindi una sua comprensione, seppur non approfondita, risulta quasi obbligatoria. Prima quindi di creare un nuovo progetto Laravel, è necessario avere Composer installato sul proprio ambiente.
Laravel e Composer
Una volta installato il tool, possiamo inizializzare la nostra applicazione utilizzando due diverse strategie: tramite l’installer di Laravel o tramite il generatore di Composer. Nel primo caso sarò necessario scaricare l’installer come pacchetto globale sulla nostra macchina
composer global require "laravel/installer=~1.1"
e lanciare l’eseguibile appena installato
laravel new ${applicationName}
Nel secondo caso basterà invece un semplicissimo
composer create-project laravel/laravel ${applicationName} --prefer-dist
In entrambi i casi i generatori creeranno la struttura base dell’applicazione nella cartella ${applicationName}
.
Non esiste un metodo preferibile, ma secondo la documentazione ufficiale il primo risulta essere più veloce in quanto il download viene effettuato solamente nel momento dell’esecuzione dell’installer.
Composer, GIT e l’applicazione di esempio
L’applicazione appena installata, oltre alle folder di struttura definite da Laravel, presenta la cartella vendor
che raccoglie le dipendenze di terze parti. Al momento dell’inizializzazione del progetto essa conterrà esclusivamente Laravel ma successivamente potrà contenere ulteriori dipendenze.
In caso di utilizzo di un sistema per il versioning (GIT o SVN), tale cartella non dovrebbe essere condivisa, questo per non appesantire la gestione del progetto con file che possono essere scaricati dalla Rete. Una volta ricevuto un progetto già esistente basterà eseguire un
composer update
per ottenere tutte le dipendenze dalla Rete.
L’applicazione di esempio seguirà questo approccio, quindi per avviarla, sarà necessario installare preventivamente le dipendenze.
Homestead
Oltre a rendere il processo di installazione e setup il più semplice possibile, gli sviluppatori di Laravel non si sono fermati qua. Un’alternativa rispetto a quella di creare un ambiente di sviluppo completo, può essere quella di usare Homestead.
Homestead è una macchina virtuale Vagrant già configurata con tutto il software necessario per lavorare con Laravel, ovvero:
- l'OS Ubuntu;
- PHP;
- la virtual machine HHMV;
- il server engine Nginx:
- i DBMS MySQL e Postgres;
- Node per eventuali tool per progetti clientside (bower, grunt, gulp…);
- Redis e Memcached.
Questo significa che è possibile lavorare con Laravel, in un ambiente simile a quello finale di produzione, senza dover di fatto installare nulla sul proprio Pc. Vagrant si basa su VirtualBox o su VMWare per la virtualizzazione quindi richiede che almeno uno di questi strumenti sia installato. L’installazione non è banale e non è tema di questa guida quindi rimando alla guida di Homestead sul sito di Laravel e al sito ufficiale di Vagrant nel caso si verificassero particolari problemi.
L’idea di Homestead è sicuramente interessante. La prima installazione richiede un po’ di tempo in più, soprattutto per chi non conosce Vagrant, ma a lungo termine e se i progetti presentano aspetti non banali i vantaggi nell’utilizzare un sistema simile non tarderanno a palesarsi.