Efter ett år av utveckling programspråk release Den nya grenen innehåller ett antal nya funktioner, såväl som flera kompatibilitetsbrytande förändringar.
Nyckel i PHP 7.4:
- - klassegenskaper kan nu inkludera typdeklarationer, till exempel:
klassAnvändare {
offentlig int $id;
offentlig sträng $namn;
} - funktionsdefinitionssyntax "fn(parameter_list) => expr" med scope-bindning efter värde. Till exempel är "fn($x) => $x + $y" analogt med "$fn2 = function ($x) use ($y) {return $x + $y;}");
- "??=", vilket kan användas för att definiera ett standardvärde ("a ??= b" liknar "a = a ?? b", om "a" är definierat bevaras dess värde, och om det inte är definierat tilldelas värdet för "b");
- Begränsad bevarandet av arvshierarkin för typer i de typer av returvärden som härrör från dem eller möjligheten att omvandla hierarkin för ursprungliga typer till motsatsen i de härledda typerna av argument ( returtyp och argumenttypkontravarians). Följande konstruktioner kan nu användas i PHP:
klass A
klass B utökar A {}klass Producent {
public function-metod(): A {}
}
klass ChildProducer utökar Producer {
public function-metod(): B {}
} - Packar upp operatorn inuti arrayer "...$var", utföra substitution av befintliga arrayer när en ny array definieras;
$delar = ['äpple', 'päron'];
$frukter = ['banan', 'apelsin', …$delar, 'vattenmelon'];
// ['banan', 'apelsin', 'äpple', 'päron', 'vattenmelon']; - visuell presentation av stora tal med avgränsare i numeriska literaler (1_000_000_00);
- Support , som låter dig bevara en referens till ett objekt, men inte blockerar borttagningen av det associerade objektet av sophämtaren;
- Nytt objektserialisering (en kombination av Serializable och __sleep()/__wakeup()), som ersätter Serializable-gränssnittet, vilket kommer att förklaras föråldrat;
// Returnerar en array som innehåller objektets alla tillstånd;
offentlig funktion __serialisera(): array;// Återställer tillståndet för ett objekt från en array
public function __unserialize(array $data): void; - Tillåtet att kasta undantag från metoden ;
- Lade till stöd för förladdning av objektkodscachen. En parameter har lagts till för konfiguration.
, genom vilket du kan ange ett PHP-skript som ska kompileras och startas när servern startar. Detta skript kan ladda opkoden för andra filer genom att de inkluderas direkt eller genom att använda funktionen opcache_compile_file(); - Hash-tillägget har en ny crc32c-funktion för att beräkna kontrollsummor med hjälp av Castagnoli-polynomet;
- Funktionen password_hash() har uppdaterats för att stödja lösenordshashningsmetoderna argon2i och argin2id i Sodium-biblioteksimplementeringen om PHP byggs utan libargon;
- Lade till funktionen mb_str_split(), liknande str_split(), men arbetar inte på byte utan på teckenpositioner i en sträng med flera byte;
- Funktionen strip_tags() har nu möjligheten att skicka en array med taggnamn, d.v.s. istället för strip_tags($str, ' ') kan du nu ange strip_tags($str, ['a', 'p']);
- proc_open() tillåter lista av operander i en array istället för att ange en sträng som ska köras, och implementerar även möjligheten att omdirigera strömmar och stödja en null-fildeskriptor;
proc_open(['php', '-r', 'echo "Hej världen\n";'], $descriptors, $pipes);
// Som 2>&1 i skalet
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['omdirigera', 1]], $pipes);// som 2>/dev/null eller 2>nul i skalet
proc_open($cmd, [1 => ['rör', 'w'], 2 => ['null']], $rör); - Firebird/Interbase, Recode och WDDX-tilläggen har tagits bort från basdistributionen. Dessa tillägg distribueras nu via PECL;
- Överförd till kategorin Funktioner som kapslade ternära operatorer utan parenteser, åtkomst till arrayelement och strängar med hjälp av klammerparenteser ("$var{$idx}"), funktionen is_real() och konvertering till real, användning av nyckelordet parent utan en förälderklass, konfigurationsalternativet allow_url_include och användning av array_key_exists() på objekt.
Funktionerna get_magic_quotes_gpc(), get_magic_quotes_runtime() har föråldrats.
hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().Varning om användning av föråldrad funktion vid försök att bearbeta ogiltiga tecken i funktioner har tillhandahållits.
base_convert(), bindec(), octdec() och hexdec(), och när man anger ett icke-strängmönster i mb_ereg_replace().
Källa: opennet.ru
