Laravel is al jarenlang één van de meest populaire PHP frameworks. Het is elegant, eenvoudig te schalen, en is een de facto framework voor developers en bedrijven die met PHP werken. Nu komt Laravel 9 eraan, met allerlei nieuwe features.

In het verleden werden nieuwe releases elke zes maanden uitgevoerd, met als resultaat allerlei vragen, kritische reacties, en verwarring over het nieuwe release proces van Laravel. Met de release van Laravel 9, gepland voor januari 2022, is het framework overgegaan naar een cyclus van 12 maanden voor grote releases.

Dit artikel kijkt naar de belangrijkste features van Laravel 9. Daarnaast zullen we ook kijken hoe je kan upgraden naar Laravel 9 en hoe je kan beginnen met het ontwikkelen van web apps.

Wat is Laravel?

Laravel is een open source PHP webtoepassingen framework, dat bekend staat vanwege de elegante syntax. Het is een Model-View-Controller (MVC) framework voor het bouwen van eenvoudige tot complexe webtoepassingen op basis van de programmeertaal PHP, en volgt het de MVC architectuur strikt.

Als je nog nooit Laravel hebt gebruikt, kan je lezen wat Laravel is, en eens naar onze lijst met de beste Laravel tutorials kijken om er mee te beginnen.

Belangrijke features van Laravel

Als je het framework nog niet echt kent, hebben we de belangrijkste features op een rijtje gezet voor een goed overzicht.

Laravel features in bubbels
Laravel features in bubbels. (Afbeelding: Moon Technolabs)

Eloquent ORM

De object-relational mapper (ORM) voor Laravel heet Eloquent, en is meteen één van de beste features van Laravel, doordat het naadloze interactie biedt tussen het datamodel en de gewenste database.

Met Eloquent kan Laravel elke beperking rondom het gebruik en schrijven van complexe SQL queries omzeilen, zodat je eenvoudig bij de data uit je database kan.

Artisan CLI

De Artisan CLI, oftewel Command Line Interface, is ook een belangrijk aspect van Laravel. Hiermee kan je elk deel van Laravel aanpassen of aanmaken, vanaf de opdrachtregel, zonder dat je door allerlei mappenstructuren en bestanden hoeft te navigeren.

Met Artisan kan je direct vanuit de opdrachtregel met je database werken via Laravel Tinker, zonder een database client te hoeven installeren.

MVC architectuur

De MVC architectuur in Laravel maakt de taal flexibel en begrijpelijk, omdat het een bekend patroon binnen webdevelopment volgt, met constante, belangrijke verbeteringen.

Laravel zal je dwingen om de MVC architectuur te leren en begrijpen, wat heel goed is, aangezien het erg populair is en gebruikt wordt in bijna alle frameworks, van AdonisJS in JavaScript tot ASP.NET MVC van C#.

Automatische paginering

Als je moeite hebt met het aanbrengen van pagina’s in je toepassingen, dan snap je meteen de waarde van het regelen van je paginering via een ingebouwd framework.

Laravel regelt al het goede met paginering voor je via standaard ingebouwde automatische paginering. Deze feature wordt veel genoemd als groot voordeel en kan je een hoop werk besparen in het zelf uitvogelen van de pagina’s.

Beveiliging

Het uitvoerig controleren van de beveiliging van een webtoepassing die je wil gaan gebruiken is altijd belangrijk. Te makkelijk kiezen voor een toepassing met gebrekkige veiligheid kan je flink veel geld kosten, of er zelfs voor zorgen dat iemand er vandoor gaat met je site, data of producten.

Laravel heeft allerlei ingebouwde veiligheidsmaatregelen dankzij de naleving van de OWASP beveiligingsprincipes. Van Cross-Site Request Forgery (CSRF) tot SQL injection, Laravel heeft overal een ingebouwde oplossing voor.

Wat kan je verwachten in Laravel 9

De planning voor de release was eerst in september 2021, maar Laravel 9 is inmiddels uitgesteld tot januari 2022, waarmee het de eerst Long-Term Support (LTS) release is sinds de introductie van de release cyclus van 12 maanden. Er zijn allerlei verschillende oorzaken voor deze vertraging, waaronder onder meer:

  1. Laravel gebruikt verschillende community-gedreven projecten en zo’n negen verschillende Symfony libraries. Maar Symfony is van plan om hun versie 6.0 in november 2021 te releasen. Door hun eigen release te vertragen kan het Laravel team deze nieuwe versie van Symfony integraal opnemen in Laravel 9.
  2. Ook geeft het uitstel het team meer tijd om te controleren hoe Laravel samenwerkt met de nieuwe versie van Symfony. Hierdoor hebben ze de ruimte om problematische veranderingen of zelfs bugs te corrigeren.
  3. Als laatste biedt de latere release van Laravel 9 een betere positie voor de toekomstige jaarlijkse releases. Het team heeft nu steeds twee maanden extra buffer na de releases van Symfony.

De combinatie van deze redenen moge het duidelijk maken dat het wachten de moeite waard zal zijn.

Nieuwe features in Laravel 9

Tijd om te gaan kijken naar de lijst met verbeteringen en features die je kan verwachten in de volgende grote release van Laravel.

Minimale PHP vereisten

Het belangrijkste is dat Laravel 9 de nieuwste PHP 8 versie vereist, en PHPUnit 8 voor het testen. Dat is omdat Laravel 9 zoals gezegd ook de nieuwste Symfony v6.0 zal gebruiken, die ook PHP 8 vereist.

PHP 8 biedt significante verbeteringen en features, van de JIT compiler tot eigenschappen van de constructors. Je kan de benchmarks van verschillende PHP versies bekijken en lezen hoe je naar PHP 8 kan upgraden op ons blog.

Anonieme migraties van stubs

Laravel maakt het anoniem migreren van stubs de standaard wanneer je het veelgebruikte ‘migration’ commando uitvoert:

php artisan make:migration

De feature voor anonieme stubs was al in Laravel 8.37 geïntroduceerd om dit probleem op GitHub op te lossen. Het probleem was dat meerdere migraties met dezelfde class naam problemen op kan leveren wanneer je de database helemaal opnieuw probeert op te bouwen. De nieuwe feature voor migreren van stubs voorkomt dat er dubbelingen in namen zitten.

Vanaf Laravel 8.37 biedt het framework al ondersteuning voor naamloze class migratiebestanden, en in Laravel 9 zal dit ook de standaard worden.

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('people', function (Blueprint $table)
        {
            $table->string('first_name')->nullable();
        });
    }
};

Nieuwe interface voor de query builder

In de nieuwe Laravel 9 zal type hinting nog betrouwbaarder worden voor refactoring, statische analyse, en code-aanvulling binnen de verschillende IDE’s. Dat komt door het ontbreken van een gedeelde interface of overerving tussen Query\Builder, Eloquent\Builder, en Eloquent\Relation.  Maar met Laravel 9 kunnen developers nu gebruik maken van de nieuwe interface voor de query builder voor type hinting, refactoring en statische analyse.

<?php

return Model::query()
	->whereNotExists(function($query) {
		// $query is a Query\Builder
	})
	->whereHas('relation', function($query) {
		// $query is an Eloquent\Builder
	})
	->with('relation', function($query) {
		// $query is an Eloquent\Relation
	});

Deze nieuwe versie voegt de nieuwe  Illuminate\Contracts\Database\QueryBuilder interface, toe, naast de Illuminate\Database\Eloquent\Concerns\DecoratesQueryBuilder eigenschap die de interface zal implementeren in plaats van de __call magic method.

PHP 8 string functies

Aangezien Laravel 9 zich richt op PHP 8, heeft Laravel dit PR samengevoegd, met als suggestie het gebruiken van de nieuwste PHP 8 string functies.

Deze functies omvatten ook het gebruik van  str_contains(), str_starts_with(), en str_ends_with() binnen de  \Illuminate\Support\Str class.

De features en verbeteringen in Laravel 9 die we hierboven genoemd hebben zijn nog maar de belangrijkste zaken. In de nieuwe versies van Laravel zitten nog allerlei bugfixes, nieuwe features en natuurlijk serieuze veranderingen.

Laravel 9 installeren

Als je Laravel 9 alvast wil installeren voor testen en ontwikkelen, kan je het eenvoudig installeren en uitvoeren op je lokale computer.

Laravel 9 ondersteunt PHP 8, dus als je van plan bent Laravel te gaan testen, controleer eerst je PHP versie of maak een nieuwe installatie.

Je kan meer details over de release lezen via Packagist.

Om Laravel 9 via de composer te installer, voer je de volgende opdracht uit:

composer create-project --prefer-dist laravel/laravel laravel-9-dev dev-develop

Bovenstaande opdracht maakt een nieuw Laravel project aan met de projectnaam  laravel-9-dev, met de nieuwe Laravel 9, die nog in ontwikkeling is, vandaar dev-develop).

De tweede mogelijkheid is het gebruiken van de Laravel globale CLI om een nieuw Laravel project te maken en je nieuwe project te maken als onderdeel van de dev branch.

Voer daarvoor de volgende opdracht in om een nieuw Laravel 9 project te maken:

laravel new laravel-9-dev --dev

Nu je Laravel 9 geïnstalleerd hebt, kan je de nieuwe map openen (laravel-dev) en de Artisan opdracht gebruiken om de versie te controleren:

cd laravel-9-dev
php artisan --version

Je zou nu de development-versie van Laravel 9 te zien moeten krijgen. Voilà!

Samenvatting

Laravel is een geweldig PHP framework dat steeds meer aandacht krijgt van developers. De volgende grote release, Laravel 9, is de eerste die zich houdt aan de nieuwe releasecyclus van 12 maanden, en er zitten allerlei mooie nieuwe features in.

Is dit al een complete lijst van alle features? Waarschijnlijk niet, aangezien het Laravel team nog wel nieuwe features zal gaan aankondigen voor de release. Zet dit artikel dus in je favorieten, zodat je de nieuwe features kan leren kennen in de volgende updates van dit artikel.

Nu is het jouw beurt. Waar ben jij het meest benieuwd naar in Laravel 9? Laat het ons weten in de reacties hieronder!

Solomon Eseme

I am a Software Engineer and Content Creator who is geared toward building high-performing and innovative products following best practices and industry standards. I also love writing about it at Masteringbackend.com. Follow me on Twitter, LinkedIn, and About Me