PHP 8.1 serbestberdana zimanê bernamekirinê

Piştî salek pêşveçûnê, serbestberdana zimanê bernamenûsê PHP 8.1 hate pêşkêş kirin. Şaxa nû rêzek taybetmendiyên nû vedihewîne, û her weha gelek guhertinên ku lihevhatinê dişkînin.

Pêşveçûnên sereke di PHP 8.1 de:

  • Ji bo jimartinan piştgirî zêde kir, wek nimûne, hûn niha dikarin van avahîyên jêrîn bikar bînin: enum Status { case Bending; case Active; doz Archived; } class Post { fonksiyona giştî __construct( taybet Status $status = Status::Pending; ) {} function public setStatus(Status $status): void { // … } } $post->setStatus(Status::Active);
  • Piştgiriyek ji bo mijarên sivik ên bi navê Fibers zêde kir, ku dihêle hûn mijarên darvekirinê di astek nizm de birêve bibin. Piştgiriya fiber tê plan kirin ku li çarçoveyên Amphp û ReactPHP were zêdekirin. $fiber = Fibera nû (fonksiyona (): void { $valueAfterResuming = Fiber::suspend('piştî rawestandin'); // ... }); $valueAfterSuspending = $fiber->start(); $fiber->resume('piştî ji nû ve destpêkirinê');
  • Pêkanîna cacheya koda objeyê (opcache) hatiye baştirkirin, ku rê dide cachkirina agahdariya mîratgirtina polê. Vê çêtirkirinê performansa hin sepanan bi rêjeya 5-8% zêde kiriye. Baştirkirinên din jî ev in: baştirkirina JIT, piştgiriya JIT ji bo mîmariya ARM64 (AArch64), lezandina çareserkirina navan, baştirkirina timelib û pirtûkxaneya ext/date, performansa rêzkirin û bêrêzkirinê ya zêde, û baştirkirina fonksiyonên get_declared_classes(), explode(), strtr(), strnatcmp(), û dechex(). Bi tevahî, performansa Symfony Demo bi rêjeya 23.0% zêde bûye, û WordPress bi% 3.5-ê.
  • Operatora vekêşana di hundurê rêzikên "...$var" de, ku destûrê dide guheztina rêzikên heyî dema ku rêzek nû destnîşan dike, ji bo piştgirîkirina bişkokên rêzê hate berfireh kirin (berê tenê nasnameyên dîjîtal piştgirî dikirin). Mînakî, niha hûn dikarin kodê bikar bînin: $array1 = [“a” => 1]; $array2 = ["b" => 2]; $array = [“a” => 0, …$array1, …$array2]; var_dump($array); // ["a" => 1, "b" => 2]
  • Destûr e ku meriv peyva "nû" di destpêkêkeran de bikar bîne, wek mînak di pênaseyên fonksiyonê de wekî pîvanek xwerû an di taybetmendiyên arguman de. class MyController { fonksiyona gelemperî __construct (Logger taybet $logger = nû NullLogger(), ) {} }
  • Mimkun e ku meriv taybetmendiyên polê ji bo gihîştina tenê xwendinê nîşan bide (agahdariya di taybetmendiyên weha de tenê carekê dikare were nivîsandin, piştî ku ew ê ji bo guhartinê peyda nebe). class PostData { fonksiyona giştî __construct( rêzika giştî ya tenê xwendinê $sernav, tenê ji bo xwendinê ya giştî DateTimeImmutable $date, ) {} } $post = Posta nû('Sernav', /* … */); $post->title = 'Yên din'; > Çewtî: Taybetmendiya tenê xwendinê nayê guhertin Post::$title
  • Hevoksaziyek nû ji bo tiştên gazîkirî hate bicîh kirin - girtina fonksiyonek nuha dikare bi gazîkirina fonksiyonek û derbaskirina wê nirxa "..." wekî arguman pêk were (ango myFunc(...) li şûna Girtin::fromCallable('myFunc ')): fonksiyona foo (int $a, int $b) { /* … */ } $foo = foo(…); $foo(a: 1, b: 2);
  • Piştgiriya bêkêmasî ji bo celebên navberê zêde kir, ku dihêle hûn bi berhevkirina yên heyî celebên nû biafirînin. Berevajî celebên yekîtiyê, yên ku berhevokên du an bêtir celeb diyar dikin, celebên hevberdanê ne ji celebên navnîşkirî, lê hemî celebên diyarkirî yên di berhevoka dagirtî de hewce dike. function generateSlug(HasTitle&HasId $post) {vegere strtolower($post->getTitle()) . $post->getId(); }
  • Tîpek nû "tu carî" heye ku dikare were bikar anîn da ku analîzkerên statîk agahdar bike ku fonksiyonek dê pêkanîna bernameyê biqedîne, mînakî bi avêtina îstîsnayek an pêkanîna fonksiyona derketinê. fonksiyona dd($input tevlihev): qet { dernekeve; }
  • Fonksiyonek nû array_is_list hate pêşniyar kirin, ku dihêle hûn diyar bikin ku bişkokên di rêzê de li gorî zêdebûna nirxên hejmarî hatine rêz kirin, ji 0-yê dest pê dikin: $list = [“a”, “b”, “c”]; array_is_list($list); // rast $notAList = [1 => "a", 2 => "b", 3 => "c"]; array_is_list($notAList); // false $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list($alsoNotAList); // derewîn
  • Naha hûn dikarin peyva sereke ya "dawî" bikar bînin da ku rê li ber girtina berdewamên çîna dêûbav bigirin. class Foo { const giştî ya dawî X = "foo"; } class Bar extends Foo { public const X = "bar"; > Çewtiya kujer: Bar::X nikare berdewamiya dawîn bişkîne Foo::X }
  • Fonksiyonên fsync û fdatasync têne pêşniyar kirin ku zorê bidin guhertinên ku ji cache dîskê werin hilanîn. $file = fopen("sample.txt", "w"); fwrite($pel, "Hin naverok"); if (fsync($file)) { echo "Pel bi serkeftî li ser dîskê berdewam bû."; } fclose($pel);
  • Ji bilî pêşgira ku berê hatî bikar anîn "0" ji bo hejmarên oktal karîna karanîna pêşpirtikên "0o" û "0O" zêde kir. 016 === 0o16; // rast 016 === 0O16; // rast
  • Tê pêşniyar kirin ku bi rengek bijartî karanîna $ GLOBALS were sînorkirin, ku dê bibe sedema binpêkirina lihevhatina paşverû, lê dê gengaz bike ku operasyonên bi rêzan re bi girîngî bileztir bibin. Mînakî, îmkana neçalakkirina nivîsandina $GLOBALS û derbaskirina $GLOBALS ji hêla nîşanderê ve tê hesibandin. Analîza 2000 pakêtan nîşan da ku tenê 23 ji wan dê ji vê guherînê bandor bibin. Mînakî, heke pêşnûme were pejirandin, dê 8.1 êdî piştgirîya îfadeyên wekî: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS);
  • Rêbazên navxweyî divê nuha celebê rast vegerînin. Di PHP 8.1-ê de, vegerandina celebek ku bi danezana fonksiyonê re li hev nake dê hişyariyek çêbike, lê di PHP 9.0 de hişyarî dê bi xeletiyek were guheztin.
  • Xebat li ser veguheztina fonksiyonan ji karanîna çavkaniyan ber manîpulekirina tiştan berdewam kir. Fonksiyonên finfo_* û imap_* li tiştan hatine veguheztin.
  • Derbaskirina nirxên null wekî argûman ji fonksiyonên hundurîn ên ku wekî nenûle hatine nîşankirin, hate derxistin. Di PHP 8.1-ê de, karanîna avahiyên mîna str_contains ("string", null) dê bibe sedema hişyariyek, û di PHP 9 de dê bibe xeletiyek.
  • Piştgiriyek ji bo algorîtmayên haşkirina MurmurHash3 û xxHash zêde kir.

Source: opennet.ru

Ji bo malperên bi parastina DDoS, serverên VPS VDS mêvandariya pêbawer bikirin 🔥 Hostinga malperê ya pêbawer bi parastina DDoS, serverên VPS VDS bikirin | ProHoster