Počelo je alfa-testiranje PHP 8.1.

Predstavljen je prvi alfa-izdanje nove grane programskog jezika PHP 8.1. Datum izlaska je zakazan za 25. novembar. Glavne novine koje su već dostupne za testiranje ili se planiraju za implementaciju u PHP 8.1:

  • Dodana je podrška za enumeracije, na primer, sada se mogu koristiti sledeće konstrukcije: 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);
  • Dodana je podrška za lagane niti, nazvane fiberi (Fiber), koje omogućavaju upravljanje paralelizmom na niskom nivou. Podrška za fibere planira se da se doda u frameworke Amphp i ReactPHP. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('after suspending'); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume('after resuming');
  • Poboljšana je implementacija keša objektivnog koda (opcache), u kojoj je dodana mogućnost keširanja informacija o nasleđivanju klasa. Optimizacija je omogućila povećanje performansi nekih aplikacija za 5-8%.
  • Operator raspakivanja unutar nizova „…$var“, koji omogućava umetanje postojećih nizova prilikom definisanja novog niza, proširen je podrškom za string ključeve (ranije su bili podržani samo numerički identifikatori). Na primer, sada se može koristiti u kodu: $array1 = ['a' => 1]; $array2 = ['b' => 2]; $array = ['a' => 0, …$array1, …$array2]; var_dump($array); // ['a' => 1, 'b' => 2]
  • Pojavio se novi tip „never“, koji se može koristiti za obaveštavanje statičkih analitčara da funkcija prekida izvršavanje programa, na primer, pozivom izuzetka ili izvršavanjem funkcije exit. function dd(mixed $input): never { exit; }
  • Predložena je nova funkcija array_is_list, koja omogućava određivanje da li su ključevi u nizu raspoređeni u rastućem redosledu numeričkih vrednosti, počinjući od 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
  • Predložena je mogućnost redefiniranja konstanti u klasi tijekom nasljeđivanja. Kako bi se zabranilo redefiniranje konstanti roditeljske klase, može se koristiti ključna riječ „final”. class Foo { public const X = „foo”; final public const Z = „foo”; } class Bar extends Foo { public const X = „bar”; }
  • Predložene su funkcije fsync i fdatasync za prisilno spremaње promjena iz diska u predmemoriju. $file = fopen(„sample.txt”, „w”); fwrite($file, „Neki sadržaj”); if (fsync($file)) { echo „Datoteka je uspješno spremljena na disk.”; } fclose($file);
  • Dodana je mogućnost korištenja prefiksa „0o” i „0O” za osmoznamenkaste brojeve, uz prethodno korišteni prefiks „0”. 016 === 0o16; // true 016 === 0O16; // true
  • Predloženo je selektivno ograničavanje primjene $GLOBALS, što će dovesti do kršenja unazadne kompatibilnosti, ali će značajno ubrzati operacije s nizovima. Na primjer, razmatra se mogućnost zabrane pisanja u $GLOBALS i prosljeđivanja $GLOBALS putem pokazivača. Analiza 2000 paketa pokazala je da će samo 23 od njih biti pogođena ovom promjenom. Na primjer, u slučaju odobrenja prijedloga u 8.1 prestat će podrška za izraze poput: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS);
  • Nastavljeno je s prebacivanjem funkcija s korištenja resursa na manipulaciju objektima. Funkcije finfo_* i imap_* prebačene su na objekte.
  • Proglašena je zastarjela prosljeđivanje vrijednosti null kao argumenata unutarnjih funkcija označenih kao non-nullable. U PHP 8.1 korištenje konstrukcija poput str_contains(„string”, null) dovest će do upozorenja, a u PHP 9 do greške.
  • Dodana je podrška za algoritme hashiranja MurmurHash3 i xxHash.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster