PHP 8.2:n alfatestaus on alkanut

PHP 8.2 -ohjelmointikielen uuden haaran ensimmäinen alfajulkaisu on esitelty. Julkaisun on määrä tapahtua 24. marraskuuta. Tärkeimmät innovaatiot, jotka ovat jo testattavissa tai suunniteltu käyttöönotettavaksi PHP 8.2:ssa:

  • Erilliset tyypit "false" ja "null" on lisätty, joilla voidaan esimerkiksi palauttaa funktiolla valmiusmerkki, jossa on virhe tai tyhjä arvo. Aiemmin "false" ja "null" voitiin käyttää vain yhdessä muiden tyyppien kanssa (esim. "string|false"), mutta nyt niitä voidaan käyttää erikseen: function alwaysFalse(): false { return false; }
  • Lisätty mahdollisuus merkitä luokka vain luku -muotoiseksi. Tällaisten luokkien ominaisuudet voidaan asettaa vain kerran, minkä jälkeen niitä ei voi muuttaa. Aiemmin yksittäiset luokan ominaisuudet voitiin merkitä vain luku -muotoisiksi, mutta nyt voit ottaa tämän tilan käyttöön kaikille luokan ominaisuuksille kerralla. "Vain luku" -lipun määrittäminen luokkatasolla estää myös ominaisuuksien dynaamisen lisäämisen luokkaan. readonly class Viesti { julkinen toiminto __konstrukti( julkinen merkkijono $otsikko, julkinen tekijä $author, ) {} } $post = new Viesti(/* … */); $post->tuntematon = 'väärin'; // Virhe: Dynaamista ominaisuutta ei voi luoda Viesti::$tuntematon
  • Mahdollisuus luoda dynaamisesti ominaisuuksia luokassa on poistettu käytöstä (kuten "post->unknown" yllä olevassa esimerkissä). PHP 9.0:ssa sellaisten ominaisuuksien käyttö, joita ei ole alun perin määritelty luokassa, johtaa virheeseen (ErrorException). Luokat, jotka tarjoavat __get- ja __set-menetelmiä ominaisuuksien luomiseen tai dynaamisia ominaisuuksia stdClassissa, toimivat edelleen ennallaan, vain implisiittinen työ olemattomien ominaisuuksien kanssa lopetetaan kehittäjän suojaamiseksi piilovirheiltä. Jotta vanha koodi pysyisi toiminnassa, ehdotetaan "#[AllowDynamicProperties]"-attribuuttia, joka sallii dynaamisten ominaisuuksien käytön.
  • Tarjosi mahdollisuuden suodattaa arkaluonteisia asetuksia pinojäljityksen lähdössä virheen sattuessa. Tiettyjen tietojen leikkaaminen voi olla tarpeen, kun tiedot tapahtuvista virheistä lähetetään automaattisesti kolmannen osapuolen palveluihin, jotka seuraavat ongelmia ja ilmoittavat niistä kehittäjille. Voit esimerkiksi jättää jäljestä pois parametreja, jotka sisältävät käyttäjänimiä, salasanoja ja ympäristömuuttujia. funktiotesti( $foo, #[\SensitiveParameter] $salasana, $baz ) { throw new Exception('Error'); } test('foo', 'salasana', 'baz'); Vakava virhe: Ei havaittu Poikkeus: Virhe test.php:ssa:8 Pinon jäljitys: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} heitetty test.php:ssä verkossa 8
  • Mahdollisuus korvata muuttujan arvoja merkkijonoiksi käyttämällä lausekkeita "${var}" ja ${(var)} on vanhentunut. Yleisesti käytettyjen "{$var}" ja "$var" korvausten tuki on säilytetty. Esimerkiksi: "Hei {$world}"; OK "Hei $maailma"; OK "Hei ${world}"; Vanhentunut: ${} käyttäminen merkkijonoissa on vanhentunut
  • Osittain tuetut kutsuttavat tiedostot, joita voidaan kutsua "call_user_func($callable)":n kautta, on poistettu käytöstä, mutta ne eivät tue kutsumista muodossa "$callable()": "self::method" "parent::method" "static :: menetelmä" ["itse", "menetelmä"] ["parent", "method"] ["staattinen", "menetelmä"] ["Foo", "Bar::method"] [uusi Foo, "Bar: :method" "]
  • Toteutettu alueesta riippumaton tapauksen muunnos. Funktiot, kuten strtolower() ja strtoupper() muuntaa nyt aina ASCII-alueen merkkien isot ja pienet kirjaimet, kuten asetettaessa maa-asetukseksi "C".

Lähde: opennet.ru

Lisää kommentti