Pēc gada attīstības uzrādīts programmēšanas valodas izlaidums PHP 7.4. Jaunajā filiālē ir iekļauta virkne jaunu funkciju, kā arī vairākas izmaiņas, kas traucē saderību.
Ierakstītie rekvizīti - klases rekvizīti tagad var ietvert tipa deklarācijas, piemēram:
klases lietotājs {
publiskais int $id;
publiska virkne $name;
}
Saīsināts sintakse funkciju definēšanai “fn(parameter_list) => expr” ar tvēruma saistīšanu pēc vērtības. Piemēram, "fn($x) => $x + $y" ir analogs "$fn2 = funkcija ($x) use ($y) {return $x + $y;}");
Īsrakstu uzdevumu operators "??=", ko var izmantot, lai definētu noklusējuma vērtību ("a ??= b" ir līdzīgs "a = a ?? b", ja ir definēts "a", tā vērtība tiek saglabāta, un, ja tā nav definēta tiek piešķirta vērtība "b" );
Ierobežots iespēja tipu mantojuma hierarhijas saglabāšana atvasinātajos atdeves tipos vai iespēja mainīt sākotnējo tipu hierarhiju atvasinātajos argumentu tipos (kovariācija atgriešanās veids un argumenta tipa pretrunas). PHP tagad var izmantot šādas konstrukcijas:
klase A {}
B klase paplašina A {}
klases producents {
publiskās funkcijas metode(): A {}
}
class ChildProducer paplašina ražotāju {
publiskās funkcijas metode (): B {}
}
Operatora izpakošana masīvos “…$var”, ļaujot veikt esošo masīvu aizstāšanu, definējot jaunu masīvu;
Pievienots atbalsts objekta koda kešatmiņas iepriekšējai ielādei. Pievienots parametrs iestatīšanai opcache.preload, caur kuru var norādīt PHP skriptu, kas tiks apkopots un palaists, kad serveris startēs. Šis skripts var ielādēt citu failu opkodu, tos tieši iekļaujot vai izmantojot funkciju opcache_compile_file();
Hash paplašinājumam pievienota funkcija crc32c, lai aprēķinātu kontrolsummas, izmantojot Castagnoli polinomu;
Pievienots atbalsts paroles jaukšanas metodēm argon2i un argin2id funkcijai password_hash() Sodium bibliotēkas ieviešanā, ja PHP ir veidots bez libargon;
Pievienota funkcija mb_str_split(), līdzīga str_split(), bet darbojas nevis ar baitiem, bet ar rakstzīmju pozīcijām vairāku baitu virknē;
Funkcijai strip_tags() tagad ir iespēja nodot masīvu ar tagu nosaukumiem, t.i. strip_tags($str, '') vietā tagad varat norādīt strip_tags($str, ['a', 'p']);
proc_open() ļauj operandus uzskaitīt masīvā, nevis palaist virkni, kā arī nodrošina pavedienu novirzīšanu un atbalstu nulles faila deskriptoram;
// piemēram, 2>/dev/null vai 2>null čaulā
proc_open($cmd, [1 => ['caurule', 'w'], 2 => ['null']], $pipes);
Firebird/Interbase, Recode un WDDX paplašinājumi ir izslēgti no pamata izplatīšanas. Šie paplašinājumi tagad tiek izplatīti, izmantojot PECL;
Pārcelts uz kategoriju novecojis funkcijas, piemēram, ligzdotie trīskāršie operatori bez iekavām, piekļuve masīva elementiem un virknēm, izmantojot krokainas figūriekavas (“$var{$idx}”), funkcija is_real() un apraide uz reālu, izmantojot vecāku atslēgvārdu bez vecākklases, parametrs allow_url_include konfigurācijas. , objektiem izmantojot array_key_exists().
Funkcijas get_magic_quotes_gpc(), get_magic_quotes_runtime() un
hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), atjaunot_iekļauts_ceļš(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().
Mēģinot apstrādāt nepareizus simbolus funkcijās, ir sniegts brīdinājums par novecojušas funkcijas izmantošanu.
base_convert(), bindec(), octdec() un hexdec(), un, norādot nevirknes modeli mb_ereg_replace().