Vuoden kehitystyön jälkeen esitetty ohjelmointikielen julkaisu PHP 7.4. Uusi haara sisältää joukon uusia ominaisuuksia sekä useita yhteentoimivuuden muutoksia.
Kirjoitetut ominaisuudet - luokan ominaisuudet voivat nyt sisältää tyyppimäärityksiä, esimerkiksi:
luokan käyttäjä {
julkinen int $id;
julkinen merkkijono $nimi;
}
Lyhennettynä syntaksi funktioiden "fn(parameter_list) => expr" määrittämiseen sidotulla laajuudella arvon mukaan. Esimerkiksi "fn($x) => $x + $y" on analoginen "$fn2 = funktio ($x) use ($y) {return $x + $y;}");
Pikakirjoitusoperaattori "??=", jota voidaan käyttää oletusarvon määrittämiseen ("a ??= b" on samanlainen kuin "a = a ?? b", jos "a" on määritetty, sen arvo tallennetaan ja jos ei määritelty, sen arvo on määritetty "b" );
Rajoitettu tilaisuus tyyppien periytymishierarkian säilyttäminen johdetuissa palautustyypeissä tai kyky muuntaa lähdetyyppien hierarkia päinvastaiseksi johdetuissa argumenttityypeissä (kovarianssi palautustyyppi ja argumenttityyppi kontravarianssi). PHP:ssä voit nyt käyttää seuraavia rakenteita:
luokka A {}
luokka B laajentaa A {}
luokan tuottaja {
julkisen funktion metodi(): A {}
}
class ChildProducer laajentaa tuottajan {
julkisen funktion metodi(): B {}
}
Puretaan operaattori taulukoiden "...$var" sisällä, sallimalla suorittaa olemassa olevien taulukoiden korvaaminen, kun määrität uutta taulukkoa;
Tilaisuus suurten numeroiden visuaalinen suunnittelu erottimilla numeerisissa literaaleissa (1_000_000_00);
Tukea heikkoja lenkkejä, joiden avulla voit säilyttää viittauksen kohteeseen, mutta ne eivät estä jätteenkerääjää poistamasta siihen liittyvää objektia;
Uusi механизм objektien serialisointi (Serialisable- ja __sleep()/__wakeup()-yhdistelmä), joka korvasi Serialisoitavan käyttöliittymän, joka poistetaan käytöstä;
// Palauttaa taulukon, joka sisältää kaikki objektin tilat;
julkinen funktio __serialize(): array;
// Palauttaa objektin tilan taulukosta
public function __unserialize(array $data): void;
Salli poikkeuksien heittäminen menetelmästä __toString();
Lisätty tuki objektikoodin välimuistin esihaulle. Asetusta varten lisätty parametri opcache.preload, jonka avulla voit määrittää PHP-skriptin, joka käännetään ja suoritetaan, kun palvelin käynnistyy. Tämä komentosarja voi ladata muiden tiedostojen opkoodin sisällyttämällä ne suoraan tai käyttämällä opcache_compile_file()-funktiota;
crc32c-funktio on lisätty Hash-laajennukseen tarkistussummien laskemiseksi Castagnoli-polynomin avulla;
Lisätty tuki argon2i- ja argin2id-salasanojen hajautusmenetelmille Sodium-kirjaston toteutuksessa password_hash()-funktioon, jos PHP on rakennettu ilman libargonia;
Lisätty funktio mb_str_split(), joka on samanlainen kuin str_split(), mutta ei toimi tavuilla, vaan merkkipaikoilla monitavuisessa merkkijonossa;
Lisätty mahdollisuus välittää taulukko tunnisteen nimillä strip_tags()-funktioon, ts. sijasta strip_tags($str, ' ') nyt voit määrittää strip_tags($str, ['a', 'p']);
proc_open() sallii operandien luettelemisen taulukossa suoritettavan merkkijonon määrittämisen sijaan, sekä mahdollisuuden ohjata virtoja ja tukea nollatiedostokuvaajaa;
// kuten 2>/dev/null tai 2>null in shell
proc_open($cmd, [1 => ['putki', 'w'], 2 => ['null']], $pipes);
Firebird/Interbase-, Recode- ja WDDX-laajennukset eivät sisälly perusjakeluun. Nämä laajennukset jaetaan nyt PECL:n kautta;
Siirretty listalle vanhentunut ominaisuudet, kuten sisäkkäiset kolmiosaiset operaattorit ilman sulkuja, taulukkoelementtien ja merkkijonojen käyttö aaltosulkeilla ("$var{$idx}"), is_real()-funktio ja suoratoisto todelliseen muotoon, pääavainsanan käyttäminen ilman yläluokkaa, parametri allow_url_include konfiguraatiot , käyttämällä array_key_exists():tä objekteissa.
Varoitus vanhentuneen ominaisuuden käytöstä yritettäessä käsitellä virheellisiä merkkejä funktioissa
base_convert(), bindec(), octdec() ja hexdec(), ja määritettäessä ei-merkkijonomallia parametrissa mb_ereg_replace().