PHP 8: wat is er nieuw?
Omcirkel donderdag 26 november in de agenda, want op die dag wordt de laatste versie van PHP, PHP 8, in de wereld losgelaten. Welke nieuwe functies mogen we verwachten met de release PHP 8? Welke verbeteringen heeft deze laatste major versie voor ons in petto?
PHP staat voor Hypertext Preprocessor en speelt een belangrijke rol in het creëren van dynamische webpagina’s. PHP is een serverside scripttaal die hoofdzakelijk op het web gebruikt wordt.
PHP wordt maar liefst bij 79% van alle websites gebruikt en ligt aan de basis van Drupal en Wordpress. Ook Facebook en Wikipedia maken gretig gebruik van PHP.
De nieuwste release van de laatste versie van PHP heet niet voor niks ‘major release’. Deze laatste versie brengen veel en grote veranderingen met zich mee, wat kan betekenen dat de huidige code niet werkt zoals voorheen.
Daarbovenop werden er tal van optimalisaties en snelheidsverbeteringen toegevoegd.
We hebben enkele van de belangrijkste wijzigingen voor je opgesomd.
Union types 2.0
De huidige versie van PHP biedt geen ondersteuning voor union types, uitgenomen de ?type syntax en special type iterable. De RFC stelt voor om verdere ondersteuning voor union types toe te voegen om zo niet langer afhankelijk te hoeven zijn van inline documentatie.
Door in de taal union types te ondersteunen, kan er meer type informatie verplaatst worden van phpdoc naar function signatures. Dit brengt voordelen met zich mee:
- Fouten kunnen vroegtijdig opgemerkt worden omdat de types effectief worden afgedwongen.
- Het is hierdoor minder waarschijnlijk dat type information edge-cases mist of verouderd raakt.
- De types worden tijdens inheritance gecontroleerd waardoor het Liskov Substitution Principle in stand wordt gehouden.
- De types zijn beschikbaar via Reflection.
- De syntax is minder boilerplate-erig dan phpdoc.
JIT
JIT staat voor “Just in Time” en is een compiler die aanzienlijke snelheidsverbeteringen biedt. PHP is van nature een taal die geïnterpreteerd wordt. Dit houdt in dat de geschreven code pas omgezet wordt tijdens de uitvoering, terwijl dit bij een taal die gecompileerd wordt van tevoren wordt gedaan.
De JIT compiler werkt via een samenspel van interpreteren en compilen. JIT compileert code die vaak gebruikt wordt tijdens het uitvoeren en hanteert dit wanneer diezelfde code vervolgens opnieuw wordt verricht. Dit maakt het geheel sneller, aangezien deze handeling nu minder vaak uitgevoerd hoeft te worden.
Nullsafe operator
De null coalescing operator werd reeds ontwikkeld in PHP 7, alleen werkt deze niet met functies. Dit betekent dat je alsnog een check moet uitvoeren of een variabele wel bestaat na het aanroepen van een functie vooraleer je er verder mee aan de slag kan.
Dankzij de nullsafe operator is dit niet langer nodig: door eenvoudigweg een vraagteken toe te voegen, kun je aangeven dat het resultaat van de functie ook “null” kan zijn.
Attributes
Attributes, ook wel bekend als annotations, geven de mogelijkheid om metadata aan een klasse, functie of variabele mee te geven. Tot PHP 7.4 waren docblocks de enige manier om metadata toe te voegen aan declarations van functions, classes, etc.
Match expression
Dankzij de match expression wordt de switch in de meeste gevallen overbodig. Op enkele uitzonderingen na, worden alle functionaliteiten van de switch expression ook geboden met de match expression. Dat biedt enkele voordelen:
- Je krijgt een waarde terug van de functie waardoor je slechts één keer de waarde hoeft mee te geven.
- Het is een stuk korter waardoor het ook leesbaarder is.
- Je hebt niet langer bij elke optie een break statement nodig.
Constructor property promotion
RFC introduceert de Constructor property promotion voor: een nieuwe en beknoptere syntax die de property declaration simplificeert waardoor deze korter en zinvoller wordt. De hoeveelheid code die je initieel nodig had om properties aan een klasse toe te voegen en een waarde te geven, worden drastisch verminderd.
De laatste versie van PHP, PHP 8, is alvast een stevige stap in de goede richting van het opruimen van de taal. Een langverwachte release dat gewenste verbeteringen en functionaliteiten met zich mee brengt. PHP 7 heeft zich reeds mooie vooruitgangen geboekt wat betreft winst op snelheid. PHP 8 heeft hier nog een schepje bovenop gedaan dankzij de gedane optimalisaties.
Het een gestructureerde taal die de nodige overzicht biedt. PHP blijft een relevante development tool en brengt leuke voordelen met zich mee:
- Dankzij zijn dynamische aard kan je interactieve webpagina’s voorzien.
- PHP is een eenvoudige taal om te leren.
- PHP is open source en dus ook in veel gevallen gratis.
We kijken hier alvast uit naar de release!