Začelo se je alfa testiranje PHP 8.2

Predstavljena je prva alfa izdaja nove veje programskega jezika PHP 8.2. Izid je predviden za 24. november. Glavne novosti, ki so že na voljo za testiranje ali načrtovane za implementacijo v PHP 8.2:

  • Добавлены отдельные типы «false» и «null», которые могут использоваться, например, для возвращения функцией признака завершения с ошибкой или пустого значения. Ранее «false» и «null» могли использоваться только в связке с другими типами (например, «string|false»), а теперь могут применяться отдельно: function alwaysFalse(): false { return false; }
  • Dodana možnost označevanja razreda kot samo za branje. Lastnosti v takšnih razredih je mogoče nastaviti samo enkrat, potem pa jih ni več mogoče spreminjati. Prej so bile posamezne lastnosti razreda lahko označene kot samo za branje, zdaj pa lahko ta način omogočite za vse lastnosti razreda hkrati. Določanje zastavice »samo za branje« na ravni razreda prav tako prepreči dinamično dodajanje lastnosti v razred. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'napačno'; // Napaka: ni mogoče ustvariti dinamične lastnosti Post::$unknown
  • Объявлена устаревшей возможность динамического создания свойств в классе (как «post->unknown» в примере выше). В PHP 9.0 обращение к свойствам, изначально не определённым в классе, будет приводить к ошибке (ErrorException). Классы, предоставляющие методы __get и __set для создания свойств, или динамические свойства в stdClass продолжат работать без изменений, прекратится поддержка только неявной работы с несуществующими свойствами для того чтобы защитить разработчика от скрытых ошибок. Для сохранения работы старого кода предложен атрибут «#[AllowDynamicProperties]», разрешающий использование динамических свойств.
  • Omogoča filtriranje občutljivih parametrov v izhodu sledenja sklada med napako. Izrezovanje določenih informacij bo morda potrebno, ko se informacije o napakah, ki se pojavijo, samodejno pošljejo storitvam tretjih oseb, ki spremljajo težave in o njih obveščajo razvijalce. Iz sledenja lahko na primer izključite parametre, ki vključujejo uporabniška imena, gesla in spremenljivke okolja. preizkus funkcije ($foo, #[\SensitiveParameter] $geslo, $baz) { vrzi novo izjemo ('Napaka'); } test('foo', 'geslo', 'baz'); Usodna napaka: Neulovljena izjema: Napaka v test.php:8 Sled sklada: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} vrnjen v test.php na vrstici 8
  • Možnost zamenjave vrednosti spremenljivk v nize z uporabo izrazov "${var}" in ${(var)} je bila zastarela. Podpora za pogosto uporabljene zamenjave "{$var}" in "$var" je bila ohranjena. Na primer: "Pozdravljeni {$world}"; OK "Pozdravljeni $world"; OK "Pozdravljeni ${world}"; Zastarelo: uporaba ${} v nizih je zastarela
  • Zastareli delno podprti klici, ki jih je mogoče poklicati prek "call_user_func($callable)", vendar ne podpirajo klicanja v obliki "$callable()": "self::method" "parent::method" "static" ::method " ["self", "method"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [novo Foo, "Bar: :method" ]
  • Implementirana pretvorba velikih in malih črk, neodvisna od lokalne nastavitve. Funkcije, kot sta strtolower() in strtoupper(), zdaj vedno pretvorijo velike in male črke znakov v obsegu ASCII, kot da bi bile nastavljene na področne nastavitve "C".

Vir: opennet.ru

Dodaj komentar