I precedenti capitoli della guida avevano come riferimento Laravel 5.1, ma tutte le funzionalità descritte sono ancora valide anche per i rilasci successivi. Questa versione è una LTS (Long Time Support), ovvero una release destinata ad un supporto della durata di 3 anni; considerando che venne completata nel giugno del 2015 potrebbe essere una buona idea quella di sceglierla per i propri progetti, indipendentemente dalla disponibilità di versioni più recenti (le minor 5.2 e 5.3).
Nuovo motore di autenticazione
La più grossa novità introdotta in Laravel 5.2 riguarda l'autenticazione. E' infatti possibile avere più strategie di autenticazione, mentre nella 5.1 era possibile averne solo una. Per esempio si possono definire diverse utenze (admin e user) e sfruttare due logiche di autenticazione differenti.
Oltre a questa modifica strutturale è stato introdotto un nuovo comando:
php artisan make:auth
che permette di generare in automatico una serie di view da sfruttare con i controller standard dedicati all'autenticazione. Il comando genera view per tutti gli aspetti del flow di autenticazione e registrazione (login, register, password reset) e configura le rotte, è quindi molto utile per avere una struttura di pagine semplice e funzionale da personalizzare.
Binding di modelli implicito
La seconda modifica riguarda le rotte ed in particolare il model binding, ovvero la possibilità di avere a disposizione nel controller il modello associato alla rotta senza occuparci personalmente del suo recupero dal database.
Rispetto alla versione precedente, dove era necessario usare il metodo Route::model
, Laravel 5.2 è più "intelligente" e permette di configurare un binding sfruttando solamente il type hinting di PHP:
Route::get('/user/{user}', function (User $user) {
return $user;
});
Gruppi di Middleware e Rate Limiting
Sempre riguardo alla gestione delle rotte, un'altra novità riguarda la possibilità di raggruppare i middleware in gruppi richiamabili all'interno delle rotte in modo da permettere una maggiore configurabilità.
All'interno del file App\Http\Kernel.php
è possibile definire i gruppi come vettori di classi. Dal punto di vista delle rotte la modifica è trasparente: i gruppi possono essere richiamati come un normale middleware.
Inoltre è stato introdotto un nuovo middleware, throttle
, utile nel caso si utilizzino API, per limitare il numero di chiamate dallo stesso IP.
Validazione
Il motore di validazione di Laravel acquisisce due novità. La prima riguarda la validazione degli array ricevuti tramite parametri della request. Grazie all'utilizzo della wildcard * è possibile verificare che tutti gli elementi in una lista rispettino la regola definita. Per esempio con la regola
'utente.*.nome' => 'required'
ci assicuriamo che ogni oggetto utente abbia il nome valorizzato.
La seconda novità riguarda la disponibilità di una nuova meta regola: bail
che permette di ottimizzare il processo di validazione interrompendo le regole successive appena una regola fallisce. Per esempio con la regola
'user_id' => 'bail|integer|unique:users'
comunichiamo a Laravel di evitare di eseguire la query per controllare l'univocità dell'id se questo non è un intero; senza l'utilizzo di bail
essa verrebbe comunque eseguita.