Etter et år med utvikling presentert utgivelse av programmeringsspråk PHP 7.4. Den nye grenen inkluderer en rekke nye funksjoner, samt flere endringer som bryter kompatibiliteten.
Innskrevne egenskaper - klasseegenskaper kan nå inkludere typedeklarasjoner, for eksempel:
klasse Bruker {
offentlig int $id;
offentlig streng $navn;
}
Forkortet syntaks for å definere funksjoner "fn(parameter_list) => expr" med omfangsbinding etter verdi. For eksempel, "fn($x) => $x + $y" er analogt med "$fn2 = funksjon ($x) bruk ($y) {retur $x + $y;}");
Stenografi-oppdragsoperatør "??=" som kan brukes til å definere en standardverdi ("a ??= b" ligner på "a = a ?? b", hvis "a" er definert, lagres verdien, og hvis den ikke er definert er tildelt verdien "b" );
Begrenset mulighet bevare arvehierarkiet av typer i avledede returtyper, eller muligheten til å reversere hierarkiet til de opprinnelige typene i avledede argumenttyper (kovarians returtype og argumenttype motvariasjon). Følgende konstruksjoner kan nå brukes i PHP:
klasse A {}
klasse B utvider A {}
klasse Produsent {
offentlig funksjonsmetode(): A {}
}
klasse ChildProducer utvider Producer {
offentlig funksjonsmetode(): B {}
}
Pakker ut operatør i arrays "...$var", tillater utføre erstatning av eksisterende matriser når du definerer en ny matrise;
Opportunity visuell representasjon av store tall med skilletegn i numeriske bokstaver (1_000_000_00);
Støtte svake ledd, som lar deg beholde en referanse til et objekt, men ikke blokkerer søppelsamleren fra å slette det tilknyttede objektet;
Ny mekanisme objektserialisering (en kombinasjon av Serializable og __sleep()/__wakeup()), som erstattet Serializable-grensesnittet, som vil bli avviklet;
// Returnerer en matrise som inneholder alle tilstandene til objektet;
offentlig funksjon __serialize(): array;
// Gjenoppretter tilstanden til et objekt fra en matrise
offentlig funksjon __unserialize(array $data): void;
Tillatt å kaste unntak fra en metode __toString();
Lagt til støtte for forhåndsinnlasting av objektkodebufferen. Lagt til parameter for innstilling opcache.preload, der du kan spesifisere et PHP-skript som skal kompileres og kjøres når serveren starter. Dette skriptet kan laste opkoden til andre filer gjennom deres direkte inkludering eller ved å bruke funksjonen opcache_compile_file();
La til crc32c-funksjonen til Hash-utvidelsen for å beregne kontrollsummer ved å bruke Castagnoli-polynomet;
Lagt til støtte til password_hash()-funksjonen for passordhash-metodene argon2i og argin2id, i implementeringen av Sodium-biblioteket, hvis PHP er bygget uten libargon;
Lagt til funksjon mb_str_split(), lik str_split(), men opererer ikke med bytes, men med tegnposisjoner i en multi-byte streng;
Strip_tags()-funksjonen har nå muligheten til å sende en matrise med tag-navn, dvs. i stedet for strip_tags($str, '') kan du nå spesifisere strip_tags($str, ['a', 'p']);
proc_open() lar operander listes opp i en matrise i stedet for en streng for å kjøre, og den gir også trådomdirigering og støtte for en nullfilbeskrivelse;
// Som 2>&1 i skallet
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);
// som 2>/dev/null eller 2>nul i skallet
proc_open($cmd, [1 => ['rør', 'w'], 2 => ['null']], $rør);
Firebird/Interbase, Recode og WDDX utvidelser er ekskludert fra den grunnleggende distribusjonen. Disse utvidelsene distribueres nå gjennom PECL;
Overført til kategori utdatert funksjoner som nestede ternære operatorer uten parentes, tilgang til array-elementer og strenger ved hjelp av krøllete klammer (“$var{$idx}”), is_real()-funksjonen og casting til real, ved å bruke det overordnede nøkkelordet uten en overordnet klasse, parameter allow_url_include-konfigurasjoner , ved å bruke array_key_exists() på objekter.
En advarsel om bruk av en foreldet funksjon er gitt ved forsøk på å behandle feil symboler i funksjoner
base_convert(), bindec(), octdec() og hexdec(), og når du spesifiserer et ikke-strengmønster i mb_ereg_replace().