Začelo se je alfa testiranje PHP 8.1.

Predstavljen je prvi alfa-izdanje nove verzije programskog jezika PHP 8.1. Izdanje je zakazano za 25. novembar. Glavne novine, koje su već dostupne za testiranje ili koje se planiraju za implementaciju u PHP 8.1:

  • Dodana je podrška za enumeracije, na primer, sada je moguće 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 lake niti, nazvane fajberima (Fiber), koje omogućavaju upravljanje paralelizmom na niskom nivou. Podrška za fajbere se planira dodati 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 nasledstvu klasa. Optimizacija je omogućila povećanje performansi nekih aplikacija za 5-8%.
  • Operator raspakivanja unutar nizova „…$var“, koji omogućava substituciju postojećih nizova prilikom definisanja novog niza, proširen je podrškom za string ključeve (ranije su podržavani samo numerički identifikatori). Na primer, sada je moguće koristiti u kodu: $array1 = ['a' => 1]; $array2 = ['b' => 2]; $array = ['a' => 0, …$array1, …$array2]; var_dump($array); // ['a' => 1, 'b' => 2]
  • Uveden je novi tip „never“, koji se može koristiti za informisanje statičkih analizatora da funkcija prekida izvršavanje programa, na primer, pozivajući izuzetak ili izvršavajući funkciju exit. function dd(mixed $input): never { exit; }
  • Predložena je nova funkcija array_is_list, koja omogućava da se utvrdi da li su ključevi u nizu raspoređeni u redosledu rastućih numeričkih vrednosti, počevš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
  • Ponujena je možnost preoblikovanja konstant v razredu med dedovanjem. Za prepoved preoblikovanja konstant starševskega razreda lahko uporabite ključno besedo „final“. class Foo { public const X = „foo“; final public const Z = „foo“; } class Bar extends Foo { public const X = „bar“; }
  • Predlagani sta funkciji fsync in fdatasync za prisilno shranjevanje sprememb iz diska v predpomnilnik. $file = fopen(„sample.txt“, „w“); fwrite($file, „Nekaj vsebine“); if (fsync($file)) { echo „Datoteka je bila uspešno shranjena na disk.“; } fclose($file);
  • Dodana je možnost uporabe predpona „0o“ in „0O“ za osemniške številke, poleg prej uporabljenega predpona „0“. 016 === 0o16; // true 016 === 0O16; // true
  • Predlagano je selektivno omejiti uporabo $GLOBALS, kar bo privedlo do kršitve nazadne združljivosti, vendar bo omogočilo znatno pospešitev operacij z matrikami. Na primer, obravnava se možnost prepovedi pisanja v $GLOBALS in prenos $GLOBALS s kazalcem. Analiza 2000 paketov je pokazala, da bo to spremembo vplivalo le na 23 od njih. Na primer, v primeru odobritve predloga bo v 8.1 prenehana podpora za takšne izraze, kot so: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS);
  • Nadaljuje se delo na prevodu funkcij z uporabo virov na manipulacijo z objekti. Na objekte so bile prevedene funkcije finfo_* in imap_*.
  • Napovedano je zastaranje prenosa vrednosti null kot argumentov notranjih funkcij, označenih kot non-nullable. V PHP 8.1 bo uporaba konstrukcij, kot je str_contains(„string“, null), povzročila opozorilo, v PHP 9 pa napako.
  • Dodana je podpora za algoritme hasiranja MurmurHash3 in xxHash.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster