Започна алфа тестирањето на PHP 8.2

Представлен первый альфа-выпуск новой ветки языка программирования PHP 8.2. Релиз намечен на 24 ноября. Основные новшества, уже доступные для тестирования или планируемые к реализации в PHP 8.2:

  • Добавлены отдельные типы «false» и «null», которые могут использоваться, например, для возвращения функцией признака завершения с ошибкой или пустого значения. Ранее «false» и «null» могли использоваться только в связке с другими типами (например, «string|false»), а теперь могут применяться отдельно: function alwaysFalse(): false { return false; }
  • Додадена е способност да се означи класа како само за читање. Својствата во таквите класи може да се постават само еднаш, по што не можат да се променат. Претходно, индивидуалните својства на класата можеа да бидат означени само за читање, но сега можете да го овозможите овој режим за сите својства на класата одеднаш. Специфицирањето на знамето „само за читање“ на ниво на класа, исто така, го блокира динамичкото додавање на својствата во класата. класа само за читање Пост { јавна функција __construct( јавна низа $title, јавен Автор $автор, ) {} } $post = нова објава(/* … */); $post->unknown = 'погрешно'; // Грешка: Не може да се создаде динамична сопственост Објава::$непознат
  • Объявлена устаревшей возможность динамического создания свойств в классе (как «post->unknown» в примере выше). В PHP 9.0 обращение к свойствам, изначально не определённым в классе, будет приводить к ошибке (ErrorException). Классы, предоставляющие методы __get и __set для создания свойств, или динамические свойства в stdClass продолжат работать без изменений, прекратится поддержка только неявной работы с несуществующими свойствами для того чтобы защитить разработчика от скрытых ошибок. Для сохранения работы старого кода предложен атрибут «#[AllowDynamicProperties]», разрешающий использование динамических свойств.
  • Обезбедува можност за филтрирање на чувствителни параметри во излезот за следење на оџакот при грешка. Исклучувањето на одредени информации може да биде неопходно кога информациите за грешките што се случуваат автоматски се испраќаат до услуги од трети страни кои ги следат проблемите и ги информираат програмерите за нив. На пример, можете да ги исклучите параметрите што вклучуваат кориснички имиња, лозинки и променливи на околината од следење. функционален тест( $foo, #[\SensitiveParameter] $password, $baz ) {фрли нов Исклучок('Грешка'); } test('foo', 'password', 'baz'); Фатална грешка: Нефатено Исклучок: Грешка во тест.php:8 Трага на оџакот: #0 test.php(11): тест('foo', Object(SensitiveParameterValue), 'baz') #1 {main} фрлена во test.php на линија 8
  • Способноста да се заменат вредностите на променливите во низи со помош на изразите „${var}“ и ${(var)} е застарена. Поддршката за најчесто користените замени „{$var}“ и „$var“ е задржана. На пример: "Здраво {$world}"; OK "Здраво $world"; OK "Здраво ${world}"; Застарено: Користењето на ${} во низи е застарено
  • Застарени делумно поддржани повикувачи кои може да се повикаат преку „call_user_func($callable)“, но не поддржуваат повикување во форма на „$callable()“: „self::method“ „parent::method“ „static“ ::method " ["себе", "метод"] ["родител", "метод"] ["статички", "метод"] ["Foo", "Bar::method"] [new Foo, "Bar: :method" ]
  • Спроведена конверзија на случај независна од локација. Функциите како strtolower() и strtoupper() сега секогаш ги конвертираат буквите на знаците во опсегот ASCII како да се поставени на локацијата „C“.

Извор: opennet.ru

Додадете коментар