Po roku vývoja predložené vydanie programovacieho jazyka PHP 7.4. Nová pobočka obsahuje sériu nových funkcií, ako aj niekoľko zmien, ktoré narúšajú kompatibilitu.
Typované vlastnosti - vlastnosti triedy môžu teraz obsahovať deklarácie typu, napríklad:
trieda Používateľ {
public int $id;
verejný reťazec $meno;
}
Skrátené syntax na definovanie funkcií „fn(zoznam_parametrov) => expr“ s rozsahom viazaným hodnotou. Napríklad „fn($x) => $x + $y“ je analogické k „$fn2 = funkcia ($x) použite ($y) {return $x + $y;}“);
Operátor stenografického priradenia "??=", ktorý možno použiť na definovanie predvolenej hodnoty ("a ??= b" je podobné ako "a = a ?? b", ak je definované "a", jeho hodnota sa uloží, a ak nie je definovaná má priradenú hodnotu "b" );
Obmedzené príležitosť zachovanie hierarchie dedičnosti typov v odvodených návratových typoch alebo možnosť obrátiť hierarchiu pôvodných typov v odvodených typoch argumentov (kovariancia návratový typ a rozporuplnosť typu argumentu). V PHP je teraz možné použiť nasledujúce konštrukcie:
trieda A {}
trieda B rozširuje A {}
class Producent {
metóda verejnej funkcie (): A {}
}
class ChildProducer rozširuje Producer {
metóda verejnej funkcie (): B {}
}
Operátor rozbaľovania vnútri polí „…$var“, dovoľovať vykonať náhradu existujúcich polí pri definovaní nového poľa;
Pridaná podpora pre predbežné načítanie vyrovnávacej pamäte objektového kódu. Pridaný parameter pre nastavenie opcache.preload, prostredníctvom ktorého môžete zadať PHP skript, ktorý sa skompiluje a spustí pri spustení servera. Tento skript môže načítať operačný kód iných súborov prostredníctvom ich priameho zahrnutia alebo pomocou funkcie opcache_compile_file();
Do rozšírenia Hash bola pridaná funkcia crc32c na výpočet kontrolných súčtov pomocou Castagnoliho polynómu;
Pridaná podpora funkcie password_hash() pre metódy hashovania hesiel argon2i a argin2id v implementácii knižnice Sodium, ak je PHP zostavené bez libargonu;
Pridaná funkcia mb_str_split(), podobná str_split(), ale nepracuje s bajtmi, ale s pozíciami znakov vo viacbajtovom reťazci;
Funkcia strip_tags() má teraz možnosť odovzdať pole s názvami značiek, t.j. namiesto strip_tags($str, ' ') teraz môžete zadať strip_tags($str, ['a', 'p']);
proc_open() umožňuje, aby boli operandy uvedené v poli, a nie v reťazci, aby sa spúšťali, a tiež poskytuje presmerovanie vlákien a podporu pre nulový deskriptor súboru;
// Like 2>&1 in shell
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);
// ako 2>/dev/null alebo 2>nul v shelli
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);
Rozšírenia Firebird/Interbase, Recode a WDDX sú zo základnej distribúcie vylúčené. Tieto rozšírenia sú teraz distribuované prostredníctvom PECL;
Presunuté do kategórie zastarané funkcie, ako sú vnorené ternárne operátory bez zátvoriek, prístup k prvkom poľa a reťazcom pomocou zložených zátvoriek (“$var{$idx}”), funkcia is_real() a pretypovanie na real, pomocou nadradeného kľúčového slova bez nadradenej triedy, konfigurácie parametra allow_url_include pomocou array_key_exists() na objektoch.
Funkcie get_magic_quotes_gpc(), get_magic_quotes_runtime() a
hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().
Pri pokuse o spracovanie nesprávnych symbolov vo funkciách bolo poskytnuté upozornenie na použitie zastaranej funkcie
base_convert(), bindec(), octdec() a hexdec() a pri špecifikovaní nereťazcového vzoru v mb_ereg_replace().