PHP 8.1 scaoileadh teanga cláir

Tar éis bliana forbartha, cuireadh i láthair scaoileadh na teanga ríomhchlárúcháin PHP 8.1. Áiríonn an brainse nua sraith gnéithe nua, chomh maith le roinnt athruithe a bhriseann comhoiriúnacht.

Príomhfheabhsúcháin i PHP 8.1:

  • Tacaíocht bhreise le haghaidh áirimh, mar shampla, is féidir leat na tógálacha seo a leanas a úsáid anois: enum Status { cás ar feitheamh; cás Gníomhach; cás Cartlann; } rang Post { feidhm phoiblí __construct( Stádas príobháideach $status = Stádas::Ar feitheamh; ) {} setStatus feidhm phoiblí(Stádas $status): ar neamhní {// … } } $post->setStatus(Stádas::Gníomhach);
  • Tacaíocht bhreise do snáitheanna éadroma ar a dtugtar Fibers, a ligeann duit snáitheanna forghníomhaithe a bhainistiú ar leibhéal íseal. Tá sé beartaithe tacaíocht snáithíní a chur leis na creataí Amphp agus ReactPHP. $fiber = Fiber nua(feidhm (): neamhní { $valueAfterResuming = Snáithín:: fionraí ('tar éis é a chur ar fionraí'); // ... }); $valueAfterSuspending = $fiber->start(); $fiber->resume('tar éis atosú');
  • Feabhsaíodh cur i bhfeidhm an taisce cód oibiachta (opcache), rud a fhágann gur féidir faisnéis a thaisceadh faoi oidhreacht ranga. Mar gheall ar bharrfheabhsú bhí sé indéanta feidhmíocht roinnt iarratas a mhéadú 5-8%. I measc na n-uasmhéadú eile tá optamú oibríochta JIT, tacaíocht JIT don ailtireacht ARM64 (AAarch64) a chur i bhfeidhm, luasghéarú ar réiteach ainmneacha, barrfheabhsú na leabharlann ama agus folíne/dáta, sraithiú méadaithe agus feidhmíocht dísháirithe, barrfheabhsú na ranganna get_declared_(), pléascadh() , strtr() feidhm, strnatcmp(), dechex(). Go ginearálta, tá méadú 23.0% ar fheidhmíocht do Symfony Demo, agus 3.5% do WordPress.
  • Leathnaíodh an t-oibreoir díphacáil laistigh d'eagair "...$var", a cheadaíonn eagair atá ann cheana a ionadú nuair a bhíonn eagar nua á shainiú, chun tacú le heochracha teaghrán (roimhe seo níor tacaíodh ach le haitheantóirí digiteacha). Mar shampla, is féidir leat úsáid a bhaint as i gcód anois: $array1 = [“a” => 1]; $array2 = [ "b" => 2]; $array = [“a” => 0, …$array1, …$array2]; var_dump($array); // ["a" => 1, "b" => 2]
  • Tá sé ceadaithe an eochairfhocal "nua" a úsáid i dtosaitheoirí, mar shampla i sainmhínithe feidhme mar pharaiméadar réamhshocraithe nó i dtréithe argóinte. rang MyController { feidhm phoiblí __construct( Logálaí príobháideach $ logger = NullLogger nua( ), ) {} }
  • Is féidir airíonna ranga a mharcáil le haghaidh rochtana inléite amháin (ní féidir faisnéis in airíonna den sórt sin a scríobh ach uair amháin, agus ina dhiaidh sin ní bheidh sé ar fáil le hathrú). aicme PostData { feidhm phoiblí __construct(teaghrán inléite poiblí $title, inléite poiblí amháin DateTimeImmutable $date, ) {} } $ post = post nua('Teideal', /* ... */); $post->title = 'Eile'; > Earráid: Ní féidir an t-airí inléite amháin a mhodhnú Post::$title
  • Tá comhréir nua curtha i bhfeidhm le haghaidh oibiachtaí inghlaoite - is féidir dúnadh a dhéanamh anois trí fheidhm a ghlaoch agus an luach "..." a chur air mar argóint (i.e. myFunc(...) in ionad Dúnadh::fromCallable('myFunc) ')): feidhm foo (int $a, int $b) { /* ... */ } $ foo = foo(…); $foo(a: 1, b: 2);
  • Cuireadh tacaíocht iomlán leis do chineálacha trasnaithe, rud a ligeann duit cineálacha nua a chruthú trí na cinn atá ann cheana a chomhcheangal. Murab ionann agus cineálacha ceardchumainn, a shainíonn bailiúcháin de dhá chineál nó níos mó, éilíonn cineálacha trasnaithe nach bhfuil aon cheann de na cineálacha liostaithe ann, ach gach ceann de na cineálacha sonraithe sa tacar atá le líonadh. feidhm GenerationSlug(HasTitle&HasId $post) { seol ar ais strtolower($post->getTitle()). $post->getId(); }
  • Tá cineál nua "riamh" ann ar féidir a úsáid chun anailíseoirí statacha a chur ar an eolas go gcuirfidh feidhm deireadh le forghníomhú cláir, mar shampla trí eisceacht a chaitheamh nó an fheidhm scoir a fhorghníomhú. feidhm dd($input measctha): ní { scoir; }
  • Tá feidhm nua array_is_list molta, a ligeann duit a chinneadh go bhfuil na heochracha san eagar eagraithe in ord luachanna uimhriúla méadaithe, ag tosú ó 0: $list = [“a”, “b”, “c”]; eagar_is_list($list); // true $notAList = [1 => “a”, 2 => “b”, 3 => “c”]; eagar_is_list($ notAList); // false $alsoNotAList = [ "a" => "a", "b" => "b", "c" => "c"]; eagar_is_list($alsoNotAList); // bréagach
  • Is féidir leat an eochairfhocal "deiridh" a úsáid anois chun tairisigh aicme tuismitheora a chosc ó bheith sáraithe. aicme Foo { final public const X = "foo"; } rang Barra síneadh Foo { public const X = "barra"; > Earráid mharfach: Barra::Ní féidir le X an tairiseach deiridh Foo::X } a shárú
  • Tá na feidhmeanna fsync agus fdatasync beartaithe chun iallach a chur ar athruithe a shábháil ón taisce diosca. $file = fopen("sample.txt", "w"); fwrite($comhad, "Roinnt ábhar"); if (fsync($file)) { macalla "D'éirigh leis an gcomhad a chur ar aghaidh go dtí an diosca."; } fclose($comhad);
  • Cuireadh leis an gcumas na réimíreanna "0o" agus "0O" a úsáid le haghaidh uimhreacha octal, chomh maith leis an réimír "0" a úsáideadh roimhe seo. 016 === 0o16; // fíor 016 === 0O16; // fíor
  • Tá sé beartaithe úsáid $GLOBALS a theorannú go roghnach, rud as a dtiocfaidh sárú ar chomhoiriúnacht ar gcúl, ach a fhágfaidh go mbeifear in ann oibríochtaí le eagair a bhrostú go suntasach. Mar shampla, tá an fhéidearthacht ann scríobh chuig $GLOBALS a dhíchumasú agus $GLOBALS a thabhairt le pointeoir. Léirigh anailís ar 2000 pacáiste nach mbeadh tionchar ag an athrú seo ach ar 23 acu. Mar shampla, má cheadaítear an togra, ní thacóidh 8.1 le slonn mar: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; díshuiteáil($GLOBALS); le_ref($GLOBALS);
  • Ba cheart do mhodhanna inmheánacha an cineál ceart a thabhairt ar ais anois. I PHP 8.1, cuirfear rabhadh ar ais le cineál nach bhfuil ag teacht leis an dearbhú feidhme, ach i PHP 9.0 cuirfear earráid in ionad an rabhadh.
  • Leanadh den obair ar fheidhmeanna a aistriú ó úsáid acmhainní go ionramháil réad. Aistríodh na feidhmeanna finfo_* agus imap_* go réada.
  • Tá dul amú luachanna nialasach mar argóintí chuig feidhmeanna inmheánacha marcáilte neamh-neamhnithe. I PHP 8.1, má úsáidtear constructs cosúil le str_contains ("teaghrán", null) beidh rabhadh mar thoradh air, agus i PHP 9 chun earráid.
  • Tacaíocht bhreise le haghaidh halgartaim hashing MurmurHash3 agus xxHash.

Foinse: oscailtenet.ru

Add a comment