Ir sākusies PHP 8.2 alfa testēšana

Ir prezentēts pirmais PHP 8.2 programmēšanas valodas jaunās atzara alfa laidiens. Iznākšana paredzēta 24. novembrī. Galvenie jauninājumi, kas jau ir pieejami testēšanai vai plānoti ieviešanai PHP 8.2 versijā:

  • Pievienoti atsevišķi veidi “false” un “null”, kurus var izmantot, piemēram, funkcijai, lai atgrieztu kļūdas beigu karogu vai tukšu vērtību. Iepriekš “false” un “null” varēja lietot tikai kopā ar citiem veidiem (piemēram, “string|false”), bet tagad tos var lietot atsevišķi: function alwaysFalse(): false { return false; }
  • Pievienota iespēja atzīmēt klasi kā tikai lasāmu. Rekvizītus šādās klasēs var iestatīt tikai vienu reizi, pēc tam tos nevar mainīt. Iepriekš atsevišķus klases rekvizītus varēja atzīmēt kā tikai lasāmus, taču tagad šo režīmu varat iespējot visiem klases rekvizītiem vienlaikus. Norādot karodziņu "tikai lasāms" klases līmenī, tiek bloķēta rekvizītu dinamiska pievienošana klasei. readonly class Post { public function __construct( public string $nosaukums, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'nepareizi'; // Kļūda: nevar izveidot dinamisku rekvizītu Post::$unknown
  • Iespēja dinamiski izveidot rekvizītus klasē (piemēram, "post->unknown" iepriekš minētajā piemērā) ir novecojusi. PHP 9.0, piekļūstot rekvizītiem, kas klasē sākotnēji nav definēti, radīs kļūdu (ErrorException). Klases, kas nodrošina __get un __set metodes rekvizītu izveidei vai dinamiskos rekvizītus programmā stdClass, turpinās darboties bez izmaiņām, tiks atbalstīts tikai netiešs darbs ar neesošiem rekvizītiem, lai aizsargātu izstrādātāju no slēptām kļūdām. Lai saglabātu vecā koda darbību, tiek piedāvāts atribūts “#[AllowDynamicProperties]”, kas ļauj izmantot dinamiskos rekvizītus.
  • Nodrošina iespēju kļūdas laikā filtrēt sensitīvus parametrus steka izsekošanas izvadē. Noteiktas informācijas izgriešana var būt nepieciešama, ja informācija par kļūdām tiek automātiski nosūtīta trešo pušu pakalpojumiem, kas izseko problēmas un informē par tām izstrādātājus. Piemēram, varat izslēgt no izsekošanas parametrus, kas ietver lietotājvārdus, paroles un vides mainīgos. funkciju tests( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'parole', 'baz'); Fatāla kļūda: nenoķerts Izņēmums: kļūda test.php: 8. Steka izsekošana: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} iemests test.php 8. rindā
  • Iespēja aizstāt mainīgo vērtības virknēs, izmantojot izteicienus "${var}" un ${(var)}, ir novecojusi. Atbalsts bieži lietotajiem "{$var}" un "$var" aizstājumiem ir saglabāts. Piemēram: "Sveiki, {$world}"; OK "Sveika $world"; Labi "Sveiki, ${world}"; Novecojis: ${} izmantošana virknēs ir novecojusi
  • Novecojuši daļēji atbalstītie izsaucamie vienumi, kurus var izsaukt, izmantojot "call_user_func($callable)", bet neatbalsta izsaukšanu formā "$callable()": "self::method" "parent::method" "static" ::method " ["self", "method"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [jauns Foo, "Bar: :method" ]
  • Ieviesta no lokalizācijas neatkarīga reģistra konvertēšana. Tādas funkcijas kā strtolower() un strtoupper() tagad vienmēr pārveido rakstzīmju reģistru ASCII diapazonā tā, it kā tās būtu iestatītas uz "C" lokalizāciju.

Avots: opennet.ru

Pievieno komentāru