Testarea alfa a PHP 8.2 a început

A fost prezentată prima versiune alfa a noii ramuri a limbajului de programare PHP 8.2. Lansarea este programată pentru 24 noiembrie. Principalele inovații deja disponibile pentru testare sau planificate pentru implementare în PHP 8.2:

  • Добавлены отдельные типы «false» и «null», которые могут использоваться, например, для возвращения функцией признака завершения с ошибкой или пустого значения. Ранее «false» и «null» могли использоваться только в связке с другими типами (например, «string|false»), а теперь могут применяться отдельно: function alwaysFalse(): false { return false; }
  • S-a adăugat posibilitatea de a marca o clasă ca fiind doar pentru citire. Proprietățile din astfel de clase pot fi setate o singură dată, după care nu vor fi disponibile pentru modificare. Anterior, proprietățile individuale ale clasei puteau fi marcate doar pentru citire, dar acum puteți activa acest mod pentru toate proprietățile clasei simultan. Specificarea steagului „numai citire” la nivel de clasă blochează, de asemenea, adăugarea dinamică a proprietăților la clasă. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->necunoscut = 'greșit'; // Eroare: Nu se poate crea proprietatea dinamică Post::$necunoscut
  • Объявлена устаревшей возможность динамического создания свойств в классе (как «post->unknown» в примере выше). В PHP 9.0 обращение к свойствам, изначально не определённым в классе, будет приводить к ошибке (ErrorException). Классы, предоставляющие методы __get и __set для создания свойств, или динамические свойства в stdClass продолжат работать без изменений, прекратится поддержка только неявной работы с несуществующими свойствами для того чтобы защитить разработчика от скрытых ошибок. Для сохранения работы старого кода предложен атрибут «#[AllowDynamicProperties]», разрешающий использование динамических свойств.
  • Oferă posibilitatea de a filtra setările sensibile în ieșirea urmăririi stivei în momentul unei erori. Eliminarea anumitor informații poate fi necesară atunci când informațiile despre erori care apar sunt trimise automat către servicii terțe care urmăresc problemele și informează dezvoltatorii despre acestea. De exemplu, puteți exclude parametrii din urmărire care includ nume de utilizator, parole și variabile de mediu. function test( $foo, #[\SensitiveParameter] $parola, $baz ) { throw new Exception('Eroare'); } test('foo', 'parola', 'baz'); Eroare fatală: Excepție neprinsă: Eroare în test.php:8 Urmărirea stivei: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {principal} aruncat în test.php pe linia 8
  • Abilitatea de a înlocui valorile variabilelor în șiruri de caractere folosind expresiile „${var}” și ${(var)}” a fost retrasă. S-a păstrat suportul pentru înlocuirile „{$var}” și „$var” utilizate în mod obișnuit. De exemplu: „Bună ziua {$world}”; OK „Bună ziua $world”; OK „Bună ziua ${world}”; Învechit: utilizarea ${} în șiruri este depreciată
  • Apelabile parțial acceptate depreciate care pot fi apelate prin „call_user_func($callable)”, dar nu acceptă apelarea în forma „$callable()”: „self::method” „parent::method” „static::method” [”self”, “method”] [”parent”, “method”] [”static]”, [”Barrometodo”, [”Barometodo”] :: metoda"]
  • S-a implementat conversia majusculelor, independentă de localitate. Funcții precum strtolower() și strtoupper() acum convertesc întotdeauna caracterele din intervalul ASCII, ca atunci când setați localitatea la „C”.

Sursa: opennet.ru

Adauga un comentariu