Richard | 10 november 2020
PHP 8 komt uit op 26 november 2020. Het is een nieuwe zogeheten “major version”, wat kan betekenen dat de huidige code niet meer werkt zoals die dat eerder deed. Ook komen er een hoop toevoegingen en worden er snelheidsverbeteringen toegepast.
Gezien de grootte van de upgrade is het niet haalbaar om alles te benoemen. Daarom heb ik er voor gekozen die wijzigingen er uit te pikken die er voor mij het meeste uit springen.
Ondanks dat PHP van nature niet strikt is, kan het heel handig zijn om in bepaalde situaties aan te geven dat je alleen een specifiek type verwacht. Waar dit al een tijd mogelijk is, is het vanaf PHP 8 ook mogelijk om meerdere types te definiëren.
Een return type zoals “void” mag hiervoor niet gebruikt worden. Met “void” geef je aan dat er geen return is, dit valt dus niet te rijmen wanneer je soms toch een return hebt.
JIT staat voor “Just In Time”. JIT is een compiler die enorme snelheidsverbeteringen lijkt te bieden.
PHP is van nature een taal die geïnterpreteerd wordt. Wat zoveel betekent dat de code die wij schrijven pas omgezet wordt (in code die begrepen wordt door o.a. de CPU) tijdens het uitvoeren. Terwijl dit bij een taal die gecompileerd wordt van tevoren wordt gedaan.
De JIT compiler werkt via een combinatie van interpreteren en compilen. JIT compileert code die vaak wordt gebruikt tijdens het uitvoeren en gebruikt dit wanneer dezelfde code vervolgens opnieuw wordt uitgevoerd. Dit maakt het geheel sneller, aangezien deze handeling nu minder vaak uitgevoerd hoeft te worden.
De null coalescing operator bestaat al vanaf PHP 7. Deze werkt alleen niet met functies. Dit betekent dat je alsnog een check moet uitvoeren of een variabele wel bestaat na het aanroepen van een functie, voordat je er verder mee kunt werken.
Met de “nullsafe operator” is dit niet langer nodig. Door het toevoegen van een vraagteken kun je aangeven dat het resultaat van de functie ook “null” kan zijn en dit wordt dan ook teruggegeven.
Bij het aanroepen van een functie is het verplicht om de juiste volgorde van de parameters aan te houden. Enkel optionele parameters met een standaardwaarde mogen weggelaten worden mits er geen parameters worden overgeslagen.
Vanaf PHP 8 is dit niet langer noodzakelijk. Door middel van zogeheten “named arguments” kun je bij de aanroep de naam van het argument meegeven. Hierdoor is het mogelijk om de volgorde aan te passen alsmede optionele parameters weg te laten.
Kanttekening bij deze toevoeging is wel dat wanneer je data koppelt aan deze “named arguments” en dit wordt, bijvoorbeeld door een beheerder aangepast, jouw code niet meer werkt.
“Attributes”, in andere programmeertalen ook wel “annotations” genoemd, geven de mogelijkheid om metadata aan een klasse, functie of variabele mee te geven. Eerder kon dit alleen via docblocks. De tekortkoming daarvan is echter dat dit door een applicatie zelf moet worden uitgelezen. Doordat PHP nu officieel “attributes” aanbiedt kan dit door de zogeheten “tokenizer” worden gedaan.
Iedereen die ooit met PHP (of een andere programmeertaal) heeft gewerkt kent ongetwijfeld de “switch expression”.
De nieuwe “match expression” maakt de switch in de meeste gevallen overbodig. Op enkele uitzonderingen na worden alle functionaliteiten van de “switch expression” ook geboden met de “match expression”. Daarnaast zijn er een aantal voordelen:
Deze toevoeging is bedoeld om de hoeveelheid code die je nodig hebt om “properties” aan een klasse toe te voegen en een waarde te geven drastisch te verminderen.
Kan nu geschreven worden als:
Deze functie maakt het makkelijker om te zien of een woord of gedeelte van een string in een andere string zit. Eerder moesten we het doen met “strpos”.
Oude manier:
Nieuwe manier:
Nog twee functies die al heel lang hadden moeten bestaan.
Persoonlijk kijk ik enorm uit naar de livegang van PHP 8. Naast de grote veranderingen is er ook een hoop aandacht gegaan naar zaken die in eerste instantie niet heel veel toe lijken te voegen, maar juist voor programmeurs het leven iets makkelijker maakt.