Sācies PHP 8.2 alpha testēšana

Izlaidums PHP 8.2 programēšanas valodā tiks paziņots 24. novembrī. Galvenās jaunievedumi, kas jau ir pieejami testēšanai vai tiek plānoti realizēšanai PHP 8.2 ietver:

  • Pievienoti atsevišķi tipi «false» un «null», kurus var izmantot, piemēram, lai funkcija atgrieztu kļūdas pabeigšanas rādītāju vai tukšu vērtību. Agrāk «false» un «null» varēja izmantot tikai kopā ar citiem tipiem (piemēram, «string|false»), bet tagad tos var izmantot atsevišķi: function alwaysFalse(): false { return false; }
  • Pievienota iespēja apzīmēt klasi kā pieejamu tikai lasīšanai. Šādu klašu īpašības var noteikt tikai vienu reizi, pēc tam tās nebūs pieejamas maiņai. Agrāk tikai atsevišķas klases īpašības varēja būt apzīmētas kā tikai lasīšanai, bet tagad šo režīmu var aktivizēt visām klases īpašībām vienlaikus. Klases līmeņa «readonly» karogs arī bloķē dinamisku īpašību pievienošanu klasei. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = ‘wrong’; // Kļūda: nevar izveidot dinamisku īpašību Post::$unknown
  • Dinamiskās īpašību izveides iespēja klasēs (piemēram, «post->unknown» iepriekšējā piemērā) ir atzīta par novecojušu. PHP 9.0 piekļūšana īpašībām, kas sākotnēji nav noteiktas klasē, izraisīs kļūdu (ErrorException). Klases, kas nodrošina __get un __set metodes īpašību izveidei, vai dinamiskas īpašības stdClass turpinās darboties bez izmaiņām, atbalsts tikai neizteiksmīgai darbībai ar neesošām īpašībām tiks pārtraukts, lai pasargātu izstrādātāju no slēptām kļūdām. Lai saglabātu vecā koda darbību, piedāvāts atributs «#[AllowDynamicProperties]», kas ļauj izmantot dinamiskas īpašības.
  • Ir pieejama iespēja filtrēt konfidenciālos parametrus steka izsekošanas datos, kas tiek izvadīti kļūdu gadījumos. Noteiktas informācijas izslēgšana var būt nepieciešama, kad informācija par radušajām kļūdām automātiski tiek nosūtīta trešām pusēm, kas izseko problēmas un informē par tām izstrādātājus. Piemēram, var izslēgt parametrus, kas satur lietotājvārdus, parolītes un vides mainīgās. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception(‘Kļūda’); } test(‘foo’, ‘password’, ‘baz’); Fatal error: Uncaught Exception: Kļūda test.php:8 Steka izsekošana: #0 test.php(11): test(‘foo’, Object(SensitiveParameterValue), ‘baz’) #1 {main} thrown in test.php line 8
  • Ir paziņots par novecojušu iespēju mainīgo vērtību iekļaušanai virkņu izteiksmēs, izmantojot izteiksmes «${var}» un ${(var)}. Atbalsts parasti izmantotajām iekļaujām «{$var}» un «$var» ir saglabāts. Piemēram: «Sveiks, {$world}»; OK «Sveiks, $world»; OK «Sveiks, ${world}»; Novecojusi: Izmantot ${} virknēs ir novecojusi
  • Ir paziņots par novecojušām daļēji atbalstītām izsaucamām objektiem (callable), kas var tikt izsaukti, izmantojot «call_user_func($callable)», bet neatbalsta izsaukumu formā «$callable()»: «self::method» «parent::method» «static::method» [«self», «method»] [«parent», «method»] [«static», «method»] [«Foo», «Bar::method»] [new Foo, «Bar::method»]
  • Ir īstenota reģiona neatkarīga simbolu reģistru pārveidošana. Funkcijas, piemēram, strtolower() un strtoupper(), tagad vienmēr pārveido simbolu reģistru ASCII diapazonā, kad ir norādīta reģiona «C».

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster