Esitatud on esimesed alpha vÀljaanded uue PHP 8.1 programmeerimiskeele haru. VÀljalaskmine on planeeritud 25. novembriks. Peamised uuendused, mis on juba testimiseks saadaval vÔi plaanitud rakendamiseks PHP 8.1-s:
- Lisatud on toimetuste toetamine, nÀiteks saab kasutada jÀrgmisi konstruktsioone: 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);
- Lisatud on kerged niidid, mida nimetatakse faiberiteks (Fiber), mis vĂ”imaldavad madala taseme eraldamist juhtida. Faiberite toetust plaanitakse lisada Amphp ja ReactPHP raamistikesse. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend(âafter suspendingâ); // ⊠}); $valueAfterSuspending = $fiber->start(); $fiber->resume(âafter resumingâ);
- Parandatud on objektikoodi vahemĂ€lu (opcache) rakendust, kus on nĂŒĂŒd vĂ”imalik vahemĂ€llu salvestada klasside pĂ€rimisinfot. Optimeerimine on vĂ”imaldanud suurendada mĂ”nede rakenduste jĂ”udlust 5-8%.
- Massiivide sisemiste lahtipakkimise operaator «âŠ$var» on laiendatud stringi vĂ”tmete toega (varem toetati vaid numbrilisi identifikaatoreid). NĂ€iteks on nĂŒĂŒd vĂ”imalik koodis kasutada: $array1 = ["a" => 1]; $array2 = ["b" => 2]; $array = ["a" => 0, âŠ$array1, âŠ$array2]; var_dump($array); // ["a" => 1, "b" => 2]
- Uus tĂŒĂŒp «never» on nĂŒĂŒd saadaval, mida saab kasutada staatiliste analĂŒsaatorite teavitamiseks, et funktsioon lĂ”petab programmi tĂ€itmise, nĂ€iteks exception'i viskamise vĂ”i exit-funktsiooni kutsumisega. function dd(mixed $input): never { exit; }
- Uus funktsioon array_is_list on pakutud, mis vÔimaldab mÀÀrata, kas massiivi vÔtmed on jÀrjestatud kasvavas jÀrjekorras alates 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
- Pakutakse vĂ”imalust konstantide ĂŒlekirjutamiseks klassis pĂ€rimisel. Vanema klassi konstantide ĂŒlekirjutamiseks saab kasutada vĂ”tmesĂ”na âfinalâ. class Foo { public const X = "foo"; final public const Z = "foo"; } class Bar extends Foo { public const X = "bar"; }
- KÀsklused fsync ja fdatasync on ette nÀhtud muudatuste sundimiseks ketta vahemÀlust salvestamiseks. $file = fopen("sample.txt", "w"); fwrite($file, "Some content"); if (fsync($file)) { echo "Fail on edukalt kettale salvestatud."; } fclose($file);
- Lisatud on vĂ”imalus kasutada prefikse â0oâ ja â0Oâ kaheksandate arvude jaoks, lisaks varem kasutatud prefiksile â0â. 016 === 0o16; // true 016 === 0O16; // true
- On soovitatud piirata $GLOBALS kasutamist, mis vĂ”ib viia tagurpidi ĂŒhilduvuse rikkumiseni, kuid vĂ”imaldab oluliselt kiirendada massiividega töötamist. NĂ€iteks kaalutakse vĂ”imalust keelata kirjutamine $GLOBALS-sse ja edastada $GLOBALS viitena. 2000 paketi analĂŒĂŒs nĂ€itas, et ainult 23 neist mĂ”jutaks see muudatus. Kui ettepanek heaks kiidetakse, lĂ”petatakse 8.1 versioonis selliste konstruktsioonide toetamine nagu: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS);
- JÀtkatakse funktsioonide tÔlkimist ressursipÔhiselt objektipÔhiseks. Funktsioonid finfo_* ja imap_* on muudetud objekti kasutamiseks.
- On kuulutatud vananenuks null vÀÀrtuste edastamine sisemiste funktsioonide argumentidena, mis on tÀhistatud kui non-nullable. PHP 8.1 kasutamine str_contains('string', null) viib hoiatusele, ja PHP 9-s viga.
- Toetatavaks on lisatud MurmurHash3 ja xxHash hajutusalgoritmid.
Allikas: opennet.ru
