U prezantua alfa e parë e degës së re të gjuhës së programimit PHP 8.1. Lëshimi është planifikuar për 25 nëntor. Një numër risish, që janë tashmë të disponueshme për testim ose planifikohen për t'u realizuar në PHP 8.1:
- Shtohet mbështetje për enumeracione, për shembull, tani mund të përdoren strukturat në vijim: 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);
- Shtohet mbĂ«shtetje pĂ«r fibra tĂ« lehta tĂ« quajtura Fibers, qĂ« lejojnĂ« menaxhimin e paralelizmit nĂ« nivel tĂ« ulĂ«t. MbĂ«shtetje pĂ«r fibra pritet tĂ« shtohet nĂ« strukturat 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 cache-it tĂ« kodit tĂ« objektit (opcache), i cili tani ofron mundĂ«sinĂ« e caching-ut tĂ« informacionit mbi trashĂ«giminĂ« e klasave. Optimizimi ka lejuar rritjen e performancĂ«s sĂ« disa aplikacioneve me 5-8%.
- Operatori i zgjidhjes brenda array-eve ââŠ$varâ, qĂ« lejon zĂ«vendĂ«simin e array-ve ekzistues gjatĂ« definimit 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Ă«rdoren nĂ« kod: $array1 = [âaâ => 1]; $array2 = [âbâ => 2]; $array = [âaâ => 0, âŠ$array1, âŠ$array2]; var_dump($array); // [âaâ => 1, âbâ => 2]
- Ka njĂ« tip tĂ« ri âneverâ, i cili mund tĂ« pĂ«rdoret pĂ«r t'i informuar analizuesit statikĂ« se njĂ« funksion ndĂ«rpritet ekzekutimin e programit, pĂ«r shembull, duke thirrur njĂ« pĂ«rjashtim ose duke ekzekutuar funksionin exit. function dd(mixed $input): never { exit; }
- Propozohet njĂ« funksion i ri array_is_list, i cili lejon tĂ« pĂ«rcaktohet nĂ«se çelĂ«sat nĂ« njĂ« array janĂ« tĂ« rreshtuar nĂ« rendin nĂ« rritje tĂ« vlerave 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
- Ofrohet mundësia e tejkalimit të konstantave brenda klasës gjatë procesit të trashëgimisë. Për të ndaluar tejkalimin e konstantave të klasës prind, mund të përdoret fjalëkalimi «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 cache 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Ă« parafjalave «0o» dhe «0O» pĂ«r numrat oktal, pĂ«rveç parafjalĂ«s «0» qĂ« ishte pĂ«rdorur mĂ« parĂ«. 016 === 0o16; // true 016 === 0O16; // true
- Propozohet që të kufizohet përdorimi i $GLOBALS në mënyrë selektive, që do të çojë në shkelje të përputhshmërisë prapa, por do të mundësojë ndjeshëm përshpejtimin e operacioneve me array. Për shembull, po diskutohet mundësia e ndalimit të shkrimit në $GLOBALS dhe kalimi i $GLOBALS përmes një pointer. 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ë propozimit 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);
- Puna vazhdon për të transferuar funksionet nga përdorimi i burimeve në manipulimin e objekteve. Funksionet finfo_* dhe imap_* janë transferuar në objekte.
- ĂshtĂ« shpallur e papĂ«rdorshme kalimi i vlerave null si argumento nĂ« funksionet e brendshme tĂ« cilat janĂ« markuar si non-nullable. NĂ« PHP 8.1 pĂ«rdorimi i ndĂ«rtimit tĂ« tillĂ« si str_contains(«string», null) do tĂ« çojĂ« nĂ« njĂ« paralajmĂ«rim, ndĂ«rsa nĂ« PHP 9 do tĂ« rezultojĂ« nĂ« njĂ« gabim.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r algoritmet e hash-it MurmurHash3 dhe xxHash.
Burimi: opennet.ru
