Sākušās PHP 8.1 alfa testēšana.

Tika parādīta pirmā PHP 8.1 programēšanas valodas jaunās filiāles alfa versija. Izlaidums plānots 25. novembrī. Galvenās jaunievedumi, kas jau ir pieejami testēšanai vai plānoti realizācijai PHP 8.1:

  • Ieviesa atbalstu enumerācijām, piemēram, tagad var izmantot šādas konstrukcijas: enum Status { case Pending; case Active; case Archived; } class Post { public function __construct( private Status $status = Status::Pending; ) {} public function setStatus(Status $status): void { // … } } $post->setStatus(Status::Active);
  • Ieviesa atbalstu vieglajiem pavedieniem, ko sauc par fiberiem (Fiber), kas ļauj pārvaldīt paralelizāciju zemākā līmenī. Atbalsts fiberiem tiek plānots pievienot Amphp un ReactPHP ietvaros. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend(‘pēc atlikšanas’); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume(‘pēc atsākšanas’);
  • Uzlabota objektu koda kešošanas (opcache) realizācija, kurā parādījās iespēja kešot informāciju par klašu mantošanu. Optimizācija ļāva paaugstināt dažu lietojumprogrammu veiktspēju par 5-8%.
  • Izsaiņošanas operators iekšējās masīvās „…$var”, kas ļauj veikt esošu masīvu ielādi, nosakot jauno masīvu, ir paplašināts ar atbalstu virkne atslēgām (agrāk tika atbalstīti tikai skaitliskie identifikatori). Piemēram, tagad var izmantot šādu kodu: $array1 = [„a” => 1]; $array2 = [„b” => 2]; $array = [„a” => 0, …$array1, …$array2]; var_dump($array); // [„a” => 1, „b” => 2]
  • Parādījās jauns tips „never”, ko var izmantot, lai informētu statiskos analizatorus, ka funkcija pārtrauc programmas izpildi, piemēram, izsaucot izņēmumu vai veicot funkciju exit. function dd(mixed $input): never { exit; }
  • Ieteikta jauna funkcija array_is_list, kas ļauj noteikt, vai atslēgas masīvā ir sakārtotas augoša skaitļu vērtību secībā, sākot no 0: $list = [„a”, „b”, „c”]; array_is_list($list); // true $notAList = [1 => „a”, 2 => „b”, 3 => „c”]; array_is_list($notAList); // false $alsoNotAList = [„a” => „a”, „b” => „b”, „c” => „c”]; array_is_list($alsoNotAList); // false
  • Piedāvāta iespēja pārrakstīt konstantus klasē mantošanas procesā. Lai aizliegtu vecākās klases konstantu pārrakstīšanu, var izmantot atslēgvārdu „final”. class Foo { public const X = „foo”; final public const Z = „foo”; } class Bar extends Foo { public const X = „bar”; }
  • Piedāvātas funkcijas fsync un fdatasync, lai piespiestu izmaiņu saglabāšanu no diska kešatmiņas. $file = fopen(„sample.txt”, „w”); fwrite($file, „Daži saturi”); if (fsync($file)) { echo „Fails ir veiksmīgi saglabāts diskā.”; } fclose($file);
  • Pievienota iespēja izmantot prefiksus „0o” un „0O” astoņkrāsu skaitļiem, papildus iepriekš izmantotajam prefiksam „0”. 016 === 0o16; // true 016 === 0O16; // true
  • Piedāvāts selektīvi ierobežot $GLOBALS izmantošanu, kas novedīs pie atpakaļsaderības pārkāpuma, bet sniegs iespēju ievērojami paātrināt operācijas ar masīviem. Piemēram, tiek ņemta vērā iespēja aizliegt rakstīšanu $GLOBALS un pārsūtīt $GLOBALS pa norādi. Analizējot 2000 pakotnes, tika noskaidrots, ka tikai 23 no tām tiks ietekmētas šīs izmaiņas. Piemēram, ja priekšlikums tiks apstiprināts, 8.1 versijā atbalsts šādām izteiksmēm tiks pārtraukts: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS);
  • Turpināta pāreja no resursiem uz objektiem funkcijām. Uz objektiem ir pārceltas funkcijas finfo_* un imap_*.
  • Tiek uzskatīta par novecojušu null vērtību nodošana kā argumenti iekšējām funkcijām, kas marķētas kā non-nullable. PHP 8.1 konstrukcijas, piemēram, str_contains(„string”, null), izraisīs brīdinājumu, bet PHP 9 radīs kļūdu.
  • Pievienota atbalsts hašēšanas algoritmiem MurmurHash3 un xxHash.

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