PHP 8 functies en nieuwigheden

22 januari 2021

PHP 8: Wat zijn de nieuwigheden?

Goed nieuws: de opvolger van PHP 7.4 is uit! Deze versie heet PHP 8.0 en brengt een aantal grote veranderingen met zich mee. Toch zijn de verschillen een stuk minder groot dan tussen PHP 5 en PHP 7. Deze zogenaamde major release brengt wel een aantal veranderingen met zich mee, waarmee je als programmeur flink wat tijd kunt besparen. Dat is niet alles; de grootste verandering is het gebruik van Just In Time, zodat scripts sneller renderen.

Veranderingen in PHP

Veranderingen zorgen ervoor dat PHP-scripts in versie 8 een stuk sneller renderen. Maar dat betekent ook dat programmeurs rekening moeten houden met een aantal nieuwe functies en een aantal gewijzigde functies. Wat zijn de veranderingen?

Just In Time (PHP JIT)

De grootste verandering is de Just In Time-compiler. Deze compileert veelgebruikte stukken code naar zogenaamde machine code. Dat brengt een verbetering in prestaties met zich mee. Dat heeft vooral te maken met de manier waarop de pagina berekend wordt door de processor. Als eindgebruiker en dus de bezoeker van de pagina zal je er weinig van merken. Op gebied van resources op je VPS verbruik je wel veel minder. Daardoor heeft de JIT-compiler in de toekomst wel veel voordelen.

Union Types

PHP 8 komt met zogenaamde Union Types. Zonder al te technisch te worden betekent dit, dat je twee of meer types kunt declareren. Zo kun je bijvoorbeeld een type en een array tegelijkertijd declareren. Dat scheelt een hoop nieuwe functies bouwen. Tot nu toe moest je per type een nieuwe functie programmeren.

Nullsafe operator

De nullsafe operator is de aanvulling op de null coalescing operator. Dat laatste werkt niet heel goed met methode calls. Zo heb je bijvoorbeeld een extra check nodig, om zeker te weten dat de methode niet NULL is. Want anders is de kans groot dat het PHP-script helemaal niet meer zal werken. Met de nullsafe operator heb je geen aparte check meer nodig.

Attributes

Met attributen is het mogelijk om de gegevens aan een class toe te voegen zonder gebruik te maken van docblocks. Dat is een flinke verandering ten opzichte van PHP 7.4, waarbij docblocks de enige manier waren om dit werkend te krijgen. Met de nieuwe attributes kun je meteen attributen toevoegen aan bijvoorbeeld een class, functie of constante.

str_contains() functie

Veel programmeurs maken gebruik van str_pos() om te controleren of een string een andere string bevat. Daardoor heb je relatief veel programmeerwerk nodig. Met PHP 8 hoef je dit niet meer te doen. Met str_contains kun je meteen een positieve of negatieve waarde terugkrijgen, zodat je direct weet of dit het geval is.

get_debug_type functie

Een andere functie is get_debug_type. Deze nieuwe functie geeft het type van een variabele terug. Door get_debug_type() krijg je een classname te zien. Zo weet je precies of een class bijvoorbeeld een object is.

Komma’s in parameters

Veel programmeurs gebruiken een trailing comma bij het opvragen van een functie. Alleen werkte dat nog niet in PHP 8, terwijl dit bij andere programmeertalen vrij standaard was. Daarom werkt dit nu ook in PHP 8. Een welkome verandering die veel programmeertijd zal besparen.

Weak Maps

Met Weak Maps kun je een verzameling maken van verschillende weak references. Zo kun je voorkomen dat referenties die je niet meer nodig hebt nog blijven bestaan. Het gevolg is dat er minder geheugen in beslag wordt genomen. Zeker op een VPS, waar resources niet onbeperkt, zijn is dit een goede verbetering.

Consistente type fouten

Ken je het programmeren met TypeErrors? Je krijgt dan wel een waarschuwing van het systeem met als antwoord ‘null’, maar verder was er maar weinig duidelijk. Aan de hand van de API’s in PHP 8 kun je interne parameters altijd uitlezen. Op die manier krijg je een duidelijke Type Error als het uitlezen van een parameter mislukt is.

  • Deel dit bericht