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
