Wat is er nieuw in PHP 8.2
Op 24 november 2022 zal PHP 8.2 algemeen beschikbaar gemaakt worden. In dit artikel een kort overzicht van de wijzigingen die relevant zijn voor web developers. Open de links voor meer uitgebreide informatie.
Update: PHP 8.2 zal beschikbaar zijn vanaf 8 december 2022 en niet 24 november zoals eerder gerapporteerd.
Readonly klassen
In deze versie is het nu ook mogelijk om klassen als readonly aan te geven, dit was nu alleen mogelijk voor klasse-eigenschappen. Dit kan ook in combinatie met final of abstract, en subklassen zijn verplicht de readonly eigenschap mee te nemen. Het gebruik van een readonly klasse verplicht het gebruik van specifiek benoemde eigenschappen (zie uitfasering dynamische eigenschappen).
'Random' extensie
Verschillende PHP functies die nu verspreid zijn in de kern van PHP zijn verplaatst naar een aparte extensie genaamd random. Deze extensie bevat een aantal object-geörienteerde varianten van de al bestaande functies voor willekeurige getallen of bytes, inclusief varianten geschikt voor cryptografische doeleinden. Zie bijvoorbeeld de \Random\Randomizer klasse.
Wijzigingen sorteervolgorde
Een kleine verandering, maar kan grote gevolgen hebben. In PHP 8.2 zal ksort met SORT_REGULAR voortaan keys beginnend met getallen vóór keys beginnend met letters sorteren.
Kleinere wijzigingen
- true type hint: je kunt nu ook true gebruiken als een type hint
- false en null waren eerder al mogelijk als type hint, maar alleen in union type hints; deze zijn nu ook op zichzelf te gebruiken als type hint
- je kunt nu gevoelige parameters zo markeren dat ze niet in error logs verschijnen
- traits kunnen nu constanten bevatten
- /n optie voor reguliere expressies (no-capture modifier)
- curl_upkeep() functie welke een (HTTP2) cURL connectie openhoudt
Uitfasering van dynamische eigenschappen
Het wordt in de toekomst niet meer mogelijk dynamisch eigenschappen aan een object toe te wijzen. Alle eigenschappen moeten dus vooraf in de klasse-definitie benoemd worden, dus bijvoorbeeld als "public $property". Er zijn enkele uitzonderingen hiervoor, namelijk stdClass objecten, klassen met __get() en __set() methoden en klassen met het attribuut #[AllowDynamicProperties]. Je kunt ook extends stdClass gebruiken om dynamische eigenschappen alsnog te gebruiken. In PHP 9 zullen dynamische eigenschappen dus niet meer gebruikt kunnen worden.
Andere uitfaseringen
- uitfaseren van bepaalde tekstcoderingen in mbstring (welke ook al in de kern van PHP voorkomen, zoals base64)
- uitfasering van bepaalde callable-syntaxen
- uitfasering van bepaalde syntaxen om variabelen direct te laten interpreteren in strings
Verder zijn er bugfixes en veiligheids- en prestatieverbeteringen doorgevoerd. Bekijk ook de volledige lijst van wijzigingen op de website van PHP.