U prezantua versioni i parë alpha i degës së re të gjuhës së programimit PHP 8.1. Lëshimi është parashikuar për më 25 nëntor. Zhvillimet kryesore, të cilat janë tashmë të disponueshme për testim ose janë planifikuar për t'u implementuar në PHP 8.1:
- Shtuar mbështetje për enumeracionet, për shembull, tani është e mundur të përdoren konstruksione të tilla: 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);
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r rrjedha tĂ« lehta, tĂ« quajtura fiber, qĂ« lejojnĂ« menaxhimin e paralelizmit nĂ« nivelin e ulĂ«t. MbĂ«shtetje pĂ«r fibera planifikohet tĂ« shtohet nĂ« frameworket Amphp dhe ReactPHP. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend(âafter suspendingâ); // ⊠}); $valueAfterSuspending = $fiber->start(); $fiber->resume(âafter resumingâ);
- ĂshtĂ« pĂ«rmirĂ«suar implementimi i caches pĂ«r kodin e objekteve (opcache), ku Ă«shtĂ« shtuar mundĂ«sia e caching tĂ« informacionit mbi trashĂ«giminĂ« e klasave. Optimizimi ka lejuar rritjen e performancĂ«s sĂ« disa aplikacioneve me 5-8%.
- Operatori i spastrimit brenda ARRAVE «âŠ$var», i cili lejon zĂ«vendĂ«simin e Arrave ekzistuese gjatĂ« pĂ«rcaktimit tĂ« njĂ« array tĂ« ri, Ă«shtĂ« zgjeruar me mbĂ«shtetje pĂ«r çelĂ«sat string (mĂ« parĂ« mbĂ«shteteshin vetĂ«m identifikuesit numerikĂ«). PĂ«r shembull, tani mund tĂ« pĂ«rdoret nĂ« kod: $array1 = ["a" => 1]; $array2 = ["b" => 2]; $array = ["a" => 0, âŠ$array1, âŠ$array2]; var_dump($array); // ["a" => 1, "b" => 2]
- Një lloj i ri «never» është shtuar, i cili mund të përdoret për të informuar analizatorët static në lidhje me faktin se funksioni ndalon ekzekutimin e programit, për shembull, duke thirrur një përjashtim ose duke ekzekutuar funksionin exit. function dd(mixed $input): never { exit; }
- ĂshtĂ« propozuar njĂ« funksion i ri array_is_list, qĂ« pĂ«rcakton nĂ«se çelĂ«sat nĂ« njĂ« array janĂ« tĂ« renditur nĂ« rritje numerike, duke filluar nga 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
- ĂshtĂ« propozuar mundĂ«sia e kalimit tĂ« konstantave nĂ« klasĂ« gjatĂ« procesit tĂ« trashĂ«gimisĂ«. PĂ«r tĂ« ndaluar kalimin e konstantave nga klasa prind, mund tĂ« pĂ«rdoret fjala kyçe "final". class Foo { public const X = «foo»; final public const Z = «foo»; } class Bar extends Foo { public const X = «bar»; }
- Funksionet fsync dhe fdatasync janë propozuar për të ruajtur me forcë ndryshimet nga memoria e diskut. $file = fopen(«sample.txt», «w»); fwrite($file, «Disa përmbajtje»); if (fsync($file)) { echo «Skedari është ruajtur me sukses në disk.»; } fclose($file);
- ĂshtĂ« shtuar mundĂ«sia e pĂ«rdorimit tĂ« parafiseve «0o» dhe «0O» pĂ«r numrat oktal, pĂ«rveç parafisit tĂ« mĂ«parshĂ«m «0». 016 === 0o16; // true 016 === 0O16; // true
- Propozohet të kufizohet selektivisht përdorimi i $GLOBALS, që do të çojë në një shkelje të përputhshmërisë, por do të mundësojë një rritje të dukshme të operacioneve me tabela. Për shembull, po shqyrtohet mundësia e ndalimit të shkrimit në $GLOBALS dhe kalimit të $GLOBALS me referencë. Analiza e 2000 paketave tregoi se vetëm 23 prej tyre do të preken nga ky ndryshim. Për shembull, në rastin e miratimit të propozuar në 8.1 do të ndërpritet mbështetje për shprehje të tilla si: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS);
- Punët kanë vazhduar për të kaluar funksionet nga përdorimi i burimeve në manipulimin e objekteve. Funksionet finfo_* dhe imap_* janë kaluar në objekte.
- Kalimi i vlerave null si argumente në funksionet e brendshme, të shënuara si non-nullable, është shpallur të jetë i menduar si i vjetruar. Në PHP 8.1, përdorimi i konstruktimeve si str_contains("string", null) do të çojë në një paralajmërim, dhe në PHP 9 në një gabim.
- është shtuar mbështetje për algoritmet e hash-it MurmurHash3 dhe xxHash.
Burimi: opennet.ru
