PHP 8.5 introducerar URI-tillägg, pipe-operator och syntaxförbättringar
PHP 8.5 introducerar en ny URI-förlängning, pipe-operatorn och viktiga syntaxuppgraderingar, vilket ger snabbare prestanda och renare kod.
PHP, ett server-side programmeringsspråk som huvudsakligen används för att bygga dynamiska webbplatser och webbtjänster, har just släppt version 8.5, en större uppdatering som lägger till ny syntax, utökat stöd för attribut, prestandaförbättringar och flera funktioner baserade på RFC.
En av de mest betydande tilläggen är den nya inbyggda URI-förlängningen. Den erbjuder ett konsekvent API för att analysera och ändra URL:er, i enlighet med både RFC 3986 och WHATWG URL-standarder. Stödd av uriparser och Lexbor, ersätter den parse_url() i situationer där korrekt och standardkompatibel hantering krävs.
En annan stor nyhet i denna version är införandet av pipe-operatorn (|>), som möjliggör funktionell kedjning från vänster till höger. Detta eliminerar djupt nästlade funktionsanrop, vilket gör transformationspipelines enklare att läsa och underhålla. Värden rör sig direkt genom anropbara objekt, inklusive arrow-funktioner och partiella applikationer som trim(...).
PHP 8.5 förbättrar också objekthantering med clone-with-syntax. Utvecklare kan nu uppdatera valda egenskaper samtidigt som de klonar ett objekt genom clone($obj, ['prop' => value]), vilket förenklar "with-er"-mönstret och gör det användbart i readonly-klasser utan boilerplate.
En annan nyhet är attributet #[\NoDiscard], som ger en varning när en funktions returvärde ignoreras av misstag. Detta hjälper till att upptäcka fel i API:er där ett returnerat värde krävs för korrekt funktion, med (void) tillgängligt när utvecklaren uttryckligen väljer att bortse från det.
Språket utökar också stödet för uttryck vid kompileringstid. Statisk sluten och förstklassiga anropbara tillåts nu i konstanta uttryck, vilket gör dem användbara i attributargument, standardvärden för egenskaper och klasskonstanter.
Prestandaförbättringar relaterade till cURL inkluderar persistenta delade handtag. Med curl_share_init_persistent() överlever delade handtag mellan förfrågningar och återanvänder tidigare initierad anslutningsdata, vilket minskar overhead vid upprepade nätverksoperationer för långlivade applikationer.
Två nya hjälpfunktioner, array_first() och array_last(), erbjuder tydligare hantering för vanliga fall. Båda returnerar null för tomma arrayer, vilket förenklar användning tillsammans med null-coalescing-operatören och eliminerar behovet av manuella nyckelkontroller.
Ytterligare ändringar täcker ett brett spektrum av språkfunktioner. Fatala fel inkluderar nu backtraces, attribut kan rikta sig mot konstanter och statiska egenskaper stöder asymmetrisk synlighet.
Egenskaper kan markeras som final via konstruktörens egenskapsfrämjande. Dessutom lägger PHP till nya DOM-metoder som getElementsByClassName() och insertAdjacentHTML(), samt nya hjälpmetoder som grapheme_levenshtein().
Slutligen inkluderar avskrivningarna i PHP 8.5 borttagningen av icke-kanoniska typomvandlingsnamn, avskrivning av backtick-operatorn som en alias för shell_exec(), varningar för ogiltiga float-till-int-omvandlingar och begränsningar för att använda null som en array-offset. De äldre __sleep() och __wakeup() serialiseringsmetoderna är nu mjukt avskrivna till förmån för __serialize() och __unserialize().
För mer information om alla ändringar i PHP 8.5, se den officiella lanseringsinformationen eller denna sida.
