Sinds afgelopen week is Laravel 8 beschikbaar en zoals gewoonlijk bij een ‘major update’ bevat deze weer veel nieuwe functionaliteiten. Ook in deze versie heeft de Laravel community ons niet teleurgesteld. Hoog tijd dus voor een deep-dive in de nieuwste editie van Laravel, speciaal voor iedereen mét technische kennis.In dit artikel staan we stil bij de belangrijkste wijzigingen ten opzichte van Laravel 7.
Deze nieuwe release introduceert Laravel Jetstream. Een eigen models directory, model-factory-classes, migration-squashing, rate-limiter verbeteringen, time-traveling via carbon en dynamische blade-components. Kortom, teveel om op te noemen. Wil je toch alles nalezen? Duik dan eens in de Laravel 8 release notes.
Voordat we ingaan op de nieuwe functies, willen we erop wijzen dat Laravel vanaf versie 6 SemVer volgt en elke zes maanden een nieuwe major versie uitbrengt. Meer informatie over het vernieuwde releaseproces vind je hier.
Laravel Jetstream
Laravel Jetstream verbetert de bestaande Laravel UI generators. Het biedt een startpunt voor nieuwe projecten, waaronder login, registratie, e-mail verificatie, tweefactorauthenticatie, sessiebeheer, API-ondersteuning via Laravel en teambeheer.
Model directory
Laravel 8 bevat een App/Models directory. Alle generator commands gaan ervan uit dat de models in App/Models staan. Als deze directory niet bestaat, gaat het framework er vanuit dat de modals in de App folder staan.
Model factory classes
Model factories zijn nu op classes gebaseerd, te beginnen in Laravel 8, met verbeterde ondersteuning voor relaties tussen factories. Dit zorgt ervoor dat de syntax er anders uitziet dan we gewend zijn bij het generen van nieuwe records.
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;
RateLimiter::for('global', function (Request $request) {
return Limit::perMinute(1000);
});
Zoals je ziet geef je in de for() methode de HTTP request instantie mee, waardoor je volledige dynamische controle hebt over het limiteren van requests.
Datum / tijd manipulatie
Laravel gebruikers hebben al lang kunnen profiteren van de geweldige Carbon PHP library voor het aanpassen van datums en tijden. Laravel 8 gaat nog een stapje verder door tijd en datum manipulatie toe te voegen, wat voor tests en debugging uitkomst biedt.
// Travel into the future...
$this->travel(5)->milliseconds();
$this->travel(5)->seconds();
$this->travel(5)->minutes();
$this->travel(5)->hours();
$this->travel(5)->days();
$this->travel(5)->weeks();
$this->travel(5)->years();
// Travel into the past...
$this->travel(-5)->hours();
// Travel to an exact time...
$this->travelTo(now()->subHours(6));
// Return back to the present time...
$this->travelBack();
When using these methods, the time will reset between each test.
Dynamic Blade Components
Soms wil je een blade component dynamisch kunnen renderen onder runtime op basis van bepaalde business logic in je controller. Laravel 8 biedt nu de <x-dynamic-component/> attribuut om een component dynamisch te renderen. Dit ziet er als volgt uit:
<x-dynamic-component :component="$componentName" class="mt-4" />
Meer over Laravel 8
Wat ons betreft zijn dit de belangrijkste features in Laravel 8. Benieuwd naar de volledige lijst? Bekijk dan de Laravel 8 release notes en de upgrade guide om jouw applicaties zo snel mogelijk te upgraden