Pärast aastast arengut esitatakse programmeerimiskeele väljalase PHP 7.4. Uus haru sisaldab mitmeid uusi funktsioone, aga ka mitmeid muudatusi, mis rikuvad ühilduvust.
Trükitud omadused - klassi atribuudid võivad nüüd sisaldada tüübideklaratsioone, näiteks:
class kasutaja {
avalik int $id;
avalik string $nimi;
}
Lühendatult funktsioonide "fn(parameetrite_loend) => avaldis" määratlemise süntaks koos ulatuse sidumisega väärtuse järgi. Näiteks "fn($x) => $x + $y" on analoogne "$fn2 = funktsiooniga ($x) use ($y) {tagasi $x + $y;}");
Lühiülesannete operaator "??=", mida saab kasutada vaikeväärtuse määratlemiseks ("a ??= b" on sarnane "a = a ?? b", kui "a" on defineeritud, siis väärtus salvestatakse ja kui seda pole defineeritud on määratud väärtus "b" );
Piiratud võimalus tuletatud tagastustüüpide tüüpide pärimishierarhia säilitamine või tuletatud argumenditüüpide algtüüpide hierarhia ümberpööramine (kovariatsioon tagastustüüp ja argumendi tüüp kontravariatsioon). Nüüd saab PHP-s kasutada järgmisi konstruktsioone:
klass A {}
klass B laiendab A {}
klass Produtsent {
avaliku funktsiooni meetod(): A {}
}
klass ChildProducer pikendab tootja {
avaliku funktsiooni meetod(): B {}
}
Lisatud tugi objektikoodi vahemälu eellaadimiseks. Lisatud parameeter seadistamiseks opcache.preload, mille kaudu saate määrata PHP-skripti, mis kompileeritakse ja käivitatakse serveri käivitumisel. See skript võib laadida teiste failide opkoodi nende otsese kaasamise või funktsiooni opcache_compile_file() abil;
Lisati räsilaiendile funktsioon crc32c, et arvutada Castagnoli polünoomi abil kontrollsummasid;
Lisatud tugi funktsioonile password_hash() paroolide räsimeetoditele argon2i ja argin2id, Sodium teegi juurutamisel, kui PHP on ehitatud ilma libargonita;
Lisatud funktsioon mb_str_split(), mis sarnaneb str_split(), kuid ei tööta mitte baitidega, vaid märgipositsioonidega mitmebaidises stringis;
Funktsioonil strip_tags() on nüüd võimalus edastada massiivi sildinimedega, st. strip_tags($str, ' ') asemel saad nüüd määrata riba_sildid($str, ['a', 'p']);
proc_open() võimaldab operandid loetleda massiivi, mitte stringina, samuti pakub see lõime ümbersuunamist ja tuge nullfaili deskriptorile;
// nagu 2>/dev/null või 2>null shellis
proc_open($cmd, [1 => ['toru', 'w'], 2 => ['null']], $torud);
Firebird/Interbase, Recode ja WDDX laiendused on põhidistributsioonist välja jäetud. Neid laiendusi levitatakse nüüd PECL-i kaudu;
Kategooriasse üle viidud aegunud funktsioonid, nagu pesastatud kolmikoperaatorid ilma sulgudeta, massiivi elementidele ja stringidele ligipääs lokkis sulgude ("$var{$idx}") abil, funktsioon is_real() ja ülekandmine reaali, põhimärksõna kasutamine ilma vanemklassita, parameeter allow_url_include konfiguratsioonid , kasutades objektidel massiivi_võti_exists().
Kui proovite töödelda funktsioonides valesid sümboleid, on antud hoiatus vananenud funktsiooni kasutamise kohta
base_convert(), bindec(), octdec() ja hexdec() ning mittestringi mustri määramisel failis mb_ereg_replace().