Prasidėjo PHP 8.2 alfa versijos testavimas

Pristatytas pirmasis naujos PHP 8.2 programavimo kalbos šakos alfa leidimas. Išleidimas numatytas lapkričio 24 d. Pagrindinės naujovės, kurias jau galima išbandyti arba planuojama įdiegti PHP 8.2 versijoje:

  • Buvo pridėti atskiri tipai „false“ ir „null“, kuriuos galima naudoti, pavyzdžiui, norint grąžinti užbaigimo ženklą su klaida arba tuščią funkcijos reikšmę. Anksčiau "false" ir "null" galėjo būti naudojami tik kartu su kitais tipais (pavyzdžiui, "string|false"), tačiau dabar jie gali būti naudojami atskirai: function alwaysFalse(): false { return false; }
  • Pridėta galimybė pažymėti klasę kaip tik skaitomą. Tokių klasių ypatybes galima nustatyti tik vieną kartą, po to jų keisti nebebus galima. Anksčiau atskiros klasės ypatybės galėjo būti pažymėtos kaip tik skaitomos, tačiau dabar šį režimą galite įjungti visoms klasės ypatybėms vienu metu. Nurodant žymą „tik skaityti“ klasės lygiu, taip pat blokuojamas dinaminis ypatybių įtraukimas į klasę. readonly class Post { public function __construct( public string $pavadinimas, viešas Autorius $autorius, ) {} } $post = new Post(/* … */); $post->unknown = 'neteisinga'; // Klaida: Nepavyko sukurti dinaminės nuosavybės Post::$unknown
  • Galimybė dinamiškai kurti ypatybes klasėje nebenaudojama (pvz., „post->unknown“ anksčiau pateiktame pavyzdyje). PHP 9.0 prieiga prie ypatybių, kurios iš pradžių nebuvo apibrėžtos klasėje, sukels klaidą (ErrorException). Klasės, kuriose pateikiami __get ir __set ypatybių kūrimo metodai arba dinaminės savybės stdClass, ir toliau veiks nepakitusios, bus sustabdytas tik numanomas darbas su neegzistuojančiomis savybėmis, siekiant apsaugoti kūrėją nuo paslėptų klaidų. Kad senasis kodas veiktų, siūlomas atributas „#[AllowDynamicProperties]“, leidžiantis naudoti dinamines savybes.
  • Suteikta galimybė filtruoti jautrius nustatymus kamino sekimo išvestyje klaidos metu. Kai informacija apie įvykusias klaidas automatiškai siunčiama trečiųjų šalių paslaugoms, kurios seka problemas ir informuoja apie jas kūrėjus, gali prireikti iškirpti tam tikrą informaciją. Pavyzdžiui, iš sekimo galite išskirti parametrus, kurie apima naudotojų vardus, slaptažodžius ir aplinkos kintamuosius. function test( $foo, #[\SensitiveParameter] $slaptažodis, $baz ) { throw new Exception('Klaida'); } test('foo', 'slaptažodis', 'baz'); Lemtinga klaida: nepagauta Išimtis: klaida test.php: 8 dėklo sekimas: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} įmestas į test.php internete 8
  • Galimybė pakeisti kintamųjų reikšmes į eilutes naudojant „${var}“ ir ${(var)}“ išraiškas nebenaudojama. Išsaugotas dažniausiai naudojamų „{$var}“ ir „$var“ pakaitalų palaikymas. Pavyzdžiui: "Sveiki, {$world}"; Gerai „Sveikas, $pasaulis“; Gerai „Sveiki, ${world}“; Nebenaudojama: ${} naudojimas eilutėse yra nebenaudojamas
  • Iš dalies palaikomi iškvietimai, kuriuos galima iškviesti naudojant "call_user_func($callable)", buvo nebenaudojami, bet nepalaiko skambinimo forma "$callable()": "self::method" "parent::method" "static :: metodas" ["self", "method"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [naujas Foo, "Bar: :method" "]
  • Įdiegtas nuo lokalės nepriklausomas didžiųjų raidžių konvertavimas. Tokios funkcijos kaip strtolower() ir strtoupper() dabar visada konvertuoja ASCII diapazono simbolių didžiąsias ir mažąsias raides, kaip ir nustatant lokalę į "C".

Šaltinis: opennet.ru

Добавить комментарий