PHP 7.4 ohjelmointikielen julkaisu

Vuoden kehitystyön jälkeen esitetty ohjelmointikielen julkaisu PHP 7.4. Uusi haara sisältää joukon uusia ominaisuuksia sekä useita yhteentoimivuuden muutoksia.

Avain parannuksia PHP 7.4:ssä:

  • 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;

    $parts = ['omena', 'päärynä'];
    $hedelmät = ['banaani', 'appelsiini', …$osat, 'vesimeloni'];
    // ['banaani', 'appelsiini', 'omena', 'päärynä', 'vesimeloni'];

  • 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;

    proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);

    // Kuten 2>&1 kuoressa
    proc_open($cmd, [1 => ['putki', 'w'], 2 => ['uudelleenohjaus', 1]], $putket);

    // 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.

    Vanhentuneet funktiot get_magic_quotes_gpc(), get_magic_quotes_runtime(),
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), return_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    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().

Lähde: opennet.ru

Lisää kommentti