PHP 8.1 programming mutauro kuburitswa

Mushure megore rebudiriro, kuburitswa kweiyo PHP 8.1 programming mutauro kwakaunzwa. Bazi idzva rinosanganisira nhevedzano yezvinhu zvitsva, pamwe neshanduko dzakati wandei dzinoputsa kuenderana.

Kuvandudza kwakakosha muPHP 8.1:

  • Yakawedzerwa rutsigiro rwekuverenga, semuenzaniso, iwe zvino unogona kushandisa zvinotevera zvinovaka: enum Status { case Pending; nyaya Active; case Archived; } kirasi Post {basa revanhu __construct(yakavanzika Status $status = Mamiriro::Pending;) {} public function setStatus(Status $status): isina {// … }} $post->setStatus(Status::Active);
  • Yakawedzerwa rutsigiro rwetambo dzakareruka dzinodaidzwa kuti Fibers, dzinokutendera kuti utore tambo dzekuuraya padanho rakaderera. Tsigiro yeFiber yakarongwa kuwedzerwa kune Amphp uye ReactPHP masimusi. $ fiber = itsva Fiber(basa (): isina {$ valueAfterResuming = Fiber::suspend('mushure mekumisa'); // ... }); $ valueAfterSuspending = $ fiber-> kutanga (); $ fiber-> tangazve ('mushure mekutangazve');
  • Kuitwa kweiyo chinhu kodhi cache (opcache) yakagadziridzwa, zvichiita kuti zvikwanise kuchengetedza ruzivo nezve kirasi nhaka. Optimization yakaita kuti zvikwanise kuwedzera kushanda kwemamwe maapplication ne5-8%. Mamwe magadzirirwo anosanganisira optimization yeJIT mashandiro, kuita kweJIT rutsigiro rweArM64 architecture (AArch64), kukurumidza kugadzirisa zita, optimization yetimelib uye ext/date maraibhurari, kuwedzera serialization uye deserialization kuita, optimization yekuwana_declared_class (), kuputika () , strtr() basa, strnatcmp(), dechex(). Kazhinji, kune 23.0% kuwedzera kwekuita kweSymfony Demo, uye 3.5% yeWordPress.
  • Mushandi wekusunungura mukati mezvirongwa "...$var", izvo zvinobvumira kutsiviwa kwezvirongwa zviripo pakutsanangura rondedzero itsva, zvawedzerwa kutsigira makiyi etambo (kare chete zviziviso zvedhijitari zvaitsigirwa). Semuenzaniso, unogona kushandisa ikozvino mukodhi: $array1 = [β€œa” => 1]; $array2 = ["b" => 2]; $array = [β€œa” => 0, …$array1, …$array2]; var_dump($ array); // ["a" => 1, "b" => 2]
  • Inotenderwa kushandisa izwi rekuti "nyowani" mukutanga, senge mune tsananguro dzebasa senge default parameter kana mukupokana hunhu. kirasi MyController {basa revanhu __construct(yakavanzika Logger $logger = itsva NullLogger(),) {}}
  • Zvinokwanisika kumaka zvivakwa zvekirasi yekuverenga-chete kuwana (ruzivo mumidziyo yakadaro inogona kunyorwa kamwe chete, mushure mezvo haizovepo kuti ichinje). kirasi PostData {basa revanhu __construct( public readonly tambo $title, public readonly DateTimeImmutable $date, ) {} } $ post = new Post('Title', /* … */); $ post-> title = 'Zvimwe'; > Mhosho: Haikwanise kugadzirisa chivako chekuverenga chete Post::$title
  • Syntax nyowani yaitwa yezvinhu zvinodaidzwa - kuvhara ikozvino kwave kuumbwa nekudaidza basa nekuripfuudza kukosha "..." sekupokana (kureva myFunc(...) pachinzvimbo cheKuvharwa::kubva kuCallable('myFunc ')): basa foo (int $a, int $b) {/* … */ } $foo = foo(…); $fo(a: ​​1, b: 2);
  • Yakawedzera rutsigiro rwakazara rwemhando dzemharadzano, ichikubvumidza iwe kugadzira mhando nyowani nekubatanidza dziripo. Kusiyana nemhando dzemubatanidzwa, dzinotsanangura kuunganidzwa kwemhando mbiri kana kupfuura, mhando dzemharadzano dzinoda kuvepo kwete chero emhando dzakanyorwa, asi ese emhando dzakatarwa museti kuti dzizadzwe. basa rinogadziraSlug(HasTitle&HasId $post) { return strtolower($post->getTitle()) . $ post-> getId(); }
  • Pane rudzi rutsva "never" runogona kushandiswa kuzivisa static analyzers kuti basa richamisa chirongwa chekuuraya, semuenzaniso nekukanda mutsauko kana kuita basa rekubuda. basa dd(yakasanganiswa $input): usambofa {kubuda; }
  • A new function array_is_list yakarongwa, iyo inokubvumira kuona kuti makiyi ari muhurongwa akarongwa maererano nekuwedzera kwenhamba dzenhamba, kutanga kubva pa0: $list = [β€œa”, β€œb”, β€œc”]; array_is_list($ list); // chokwadi $notAList = [1 => β€œa”, 2 => β€œb”, 3 => β€œc”]; array_is_list($notAList); // nhema $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list($ alsoNotAList); // nhema
  • Iwe unogona ikozvino kushandisa "yekupedzisira" kiyi kiyi kudzivirira kirasi yevabereki garandi kuti risadzoke. kirasi Foo {yekupedzisira public const X = "foo"; } kirasi Bhara rinowedzera Foo {paruzhinji const X = "bha"; > Mhosva inouraya: Bar ::X haigone kudarika yekupedzisira inogara Foo::X }
  • Iyo fsync uye fdatasync mabasa anokurudzirwa kumanikidza shanduko kuti iponeswe kubva kune disk cache. $file = fopen("sample.txt", "w"); fwrite($file, "Zvimwe zvemukati"); kana (fsync($file)) {echo "Faira rakaramba rakabudirira kudhisiki."; } fclose($file);
  • Yakawedzera kugona kushandisa prefixes "0o" uye "0O" yenhamba dzeoctal, kuwedzera kune yakamboshandiswa prefix "0". 016 === 0o16; // chokwadi 016 === 0O16; // chokwadi
  • Inokurudzirwa kusarudza kudzikamisa kushandiswa kwe $ GLOBALS, izvo zvinozotungamira mukutyorwa kwekudzokera shure, asi zvichaita kuti zvikwanise kukurumidza kukurumidzira mashandiro ane arrays. Semuenzaniso, mukana wekumisa kunyora ku $GLOBALS uye kupfuudza $GLOBALS nepoindi iri kutariswa. Ongororo ye2000 mapakeji yakaratidza kuti makumi maviri nenhatu chete ndivo vaizokanganiswa neshanduko iyi. Semuyenzaniso, kana chikumbiro chikabvumidzwa, 23 hachichatsigire matauriro akadai sekuti: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS);
  • Nzira dzemukati dzinofanira zvino kudzorera mhando chaiyo. MuPHP 8.1, kudzorera rudzi rusingaenderane nebasa rekuzivisa kunoburitsa yambiro, asi muPHP 9.0 yambiro ichatsiviwa nekukanganisa.
  • Basa rakaenderera mberi nekufambisa mabasa kubva pakushandisa zviwanikwa kuenda kukugadzirisa zvinhu. Iyo finfo_* uye imap_* mabasa akaendeswa kune zvinhu.
  • Kupfuura hunhu husina maturo senharo kumabasa emukati akanzi haabatike kwakadzikiswa. MuPP 8.1, kushandisa zvinovaka senge str_contains("tambo", null) zvinotungamira kune yambiro, uye muPHP 9 kune kukanganisa.
  • Yakawedzera rutsigiro rweMurmurHash3 uye xxHash hashing algorithms.

Source: opennet.ru

Voeg