Efter ett år av utveckling presenteras programspråk release PHP 7.4. Den nya grenen innehåller en rad nya funktioner, samt flera ändringar som bryter kompatibiliteten.
Angivna egenskaper - klassegenskaper kan nu inkludera typdeklarationer, till exempel:
klass Användare {
public int $id;
offentlig sträng $name;
}
Förkortad syntax för att definiera funktioner "fn(parameter_list) => expr" med scope-bindning med värde. Till exempel, "fn($x) => $x + $y" är analog med "$fn2 = funktion ($x) använd ($y) {retur $x + $y;}");
Stenografisk uppdragsoperatör "??=" som kan användas för att definiera ett standardvärde ("a ??= b" liknar "a = a ?? b", om "a" är definierat lagras dess värde, och om det inte är definierat tilldelas värdet "b" );
Begränsad möjlighet bevara arvshierarkin av typer i härledda returtyper, eller möjligheten att vända hierarkin för de ursprungliga typerna i härledda argumenttyper (kovarians returtyp och argumenttyp kontravarians). Följande konstruktioner kan nu användas i PHP:
klass A {}
klass B förlänger A {}
klass producent {
public function method(): A {}
}
class ChildProducer utökar Producer {
public function method(): B {}
}
Packar upp operatören inuti arrayerna "...$var", tillåter utföra substitution av befintliga arrayer när en ny array definieras;
Möjlighet visuell representation av stora tal med avgränsare i numeriska bokstaver (1_000_000_00);
Support svaga länkar, som låter dig behålla en referens till ett objekt, men inte blockerar sopsamlaren från att ta bort det associerade objektet;
Nytt mekanism objektserialisering (en kombination av Serializable och __sleep()/__wakeup()), som ersatte gränssnittet Serializable, som kommer att fasas ut;
// Returnerar en array som innehåller alla tillstånd för objektet;
offentlig funktion __serialize(): array;
// Återställer tillståndet för ett objekt från en array
offentlig funktion __unserialize(array $data): void;
Lade till stöd för förladdning av objektkodscachen. Tillagd parameter för inställning opcache.preload, genom vilket du kan ange ett PHP-skript som kommer att kompileras och köras när servern startar. Detta skript kan ladda opcoden för andra filer genom deras direkta inkludering eller genom att använda funktionen opcache_compile_file();
Lade till crc32c-funktionen till Hash-tillägget för att beräkna kontrollsummor med hjälp av Castagnoli-polynomet;
Lade till stöd för password_hash()-funktionen för lösenordshasningsmetoderna argon2i och argin2id, i implementeringen av Sodium-biblioteket, om PHP är byggt utan libargon;
Lade till funktionen mb_str_split(), liknande str_split(), men fungerar inte med bytes utan med teckenpositioner i en flerbytesträng;
Funktionen strip_tags() har nu möjlighet att skicka en array med taggnamn, dvs. istället för strip_tags($str, ' ') kan du nu ange strip_tags($str, ['a', 'p']);
proc_open() tillåter att operander listas i en array snarare än en sträng att köra, och det ger också trådomdirigering och stöd för en nullfildeskriptor;
// som 2>/dev/null eller 2>nul i skalet
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);
Firebird/Interbase, Recode och WDDX-tillägg är exkluderade från den grundläggande distributionen. Dessa tillägg distribueras nu via PECL;
Överförd till kategori föråldrad funktioner som kapslade ternära operatorer utan parentes, åtkomst till arrayelement och strängar med hjälp av krulliga klammerparenteser ("$var{$idx}"), funktionen is_real() och casting till real, med hjälp av det överordnade nyckelordet utan en överordnad klass, parameter allow_url_include-konfigurationer , med hjälp av array_key_exists() på objekt.
En varning om användningen av en föråldrad funktion har tillhandahållits vid försök att bearbeta felaktiga symboler i funktioner
base_convert(), bindec(), octdec() och hexdec(), och när man anger ett icke-strängmönster i mb_ereg_replace().