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

Презентирано е првото алфа издание на новата гранка на програмскиот јазик PHP 8.2. Издавањето е закажано за 24 ноември. Главните иновации кои се веќе достапни за тестирање или планирани за имплементација во PHP 8.2:

  • Додадени се посебни типови „неточно“ и „нула“, кои може да се користат, на пример, за функција да врати знаменце за завршување на грешката или празна вредност. Претходно, „false“ и „null“ можеа да се користат само заедно со други типови (на пример, „string|false“), но сега тие можат да се користат одделно: function alwaysFalse(): false { return false; }
  • Додадена е способност да се означи класа како само за читање. Својствата во таквите класи може да се постават само еднаш, по што не можат да се променат. Претходно, индивидуалните својства на класата можеа да бидат означени само за читање, но сега можете да го овозможите овој режим за сите својства на класата одеднаш. Специфицирањето на знамето „само за читање“ на ниво на класа, исто така, го блокира динамичкото додавање на својствата во класата. класа само за читање Пост { јавна функција __construct( јавна низа $title, јавен Автор $автор, ) {} } $post = нова објава(/* … */); $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

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