Kutulutsidwa kwa chilankhulo cha pulogalamu ya PHP 8.1

Pambuyo pa chaka cha chitukuko, kutulutsidwa kwa chinenero cha pulogalamu ya PHP 8.1 kunaperekedwa. Nthambi yatsopanoyi ili ndi mndandanda wazinthu zatsopano, komanso zosintha zingapo zomwe zimasokoneza kugwirizanitsa.

Kusintha kwakukulu mu PHP 8.1:

  • Zowonjezera zothandizira zowerengera, mwachitsanzo, mutha kugwiritsa ntchito zomanga zotsatirazi: enum Status { case Pending; nkhani Yogwira; mlandu Wosungidwa; } kalasi Post {ntchito yapagulu __construct(chinsinsi Status $status = Status::Pending;) {} public function setStatus(Status $status): zopanda kanthu {// … }} $post->setStatus(Status::Active);
  • Thandizo lowonjezera la ulusi wopepuka wotchedwa Fibers, womwe umakupatsani mwayi wowongolera ulusi wapakatikati. Thandizo la Fiber likukonzekera kuwonjezeredwa ku machitidwe a Amphp ndi ReactPHP. $ CHIKWANGWANI = CHIKWANGWANI chatsopano(ntchito (): zopanda kanthu {$valueAfterResuming = Fiber::suspend('pambuyo kuyimitsa'); // ... }); $valueAfterSuspending = $fiber->start(); $fiber-> pitilizani ('pambuyo poyambiranso');
  • Kukhazikitsidwa kwa kachidindo ka chinthu (opcache) kwasinthidwa, ndikupangitsa kuti zitheke kusungitsa zambiri za cholowa chamagulu. Kukhathamiritsa kunapangitsa kuti ziwonjezere magwiridwe antchito ndi 5-8%. Kukhathamiritsa kwina kumaphatikizapo kukhathamiritsa kwa magwiridwe antchito a JIT, kukhazikitsidwa kwa chithandizo cha JIT pazomangamanga za ARM64 (AArch64), kufulumizitsa kusintha kwa mayina, kukhathamiritsa kwamalaibulale anthawi ndi ext/deti, kuchulukitsidwa kwa serialization ndi kusokoneza magwiridwe antchito, kukhathamiritsa kwa get_declared_classes(), kuphulika () , strtr() ntchito, strnatcmp(), dechex(). Kawirikawiri, pali kuwonjezeka kwa 23.0% kwa ntchito ya Symfony Demo, ndi 3.5% ya WordPress.
  • Wotsegula mkati mwa magulu "...$var", omwe amalola kusinthana kwa magulu omwe alipo pofotokozera mndandanda watsopano, wawonjezedwa kuti athandizire makiyi a zingwe (poyamba zizindikiritso za digito zokha zinkathandizidwa). Mwachitsanzo, mutha kugwiritsa ntchito mu code: $array1 = [“a” => 1]; $array2 = ["b" => 2]; $rraray = [“a” => 0, …$rraray1, …$rraray2]; var_dump ($ gulu); // ["a" => 1, "b" => 2]
  • Amaloledwa kugwiritsa ntchito mawu ofunikira "atsopano" poyambira, monga matanthauzidwe a ntchito ngati parameter yokhazikika kapena mikangano. class MyController {ntchito yapagulu __construct(private Logger $logger = NullLogger(),) {}}
  • N'zotheka kuyika zizindikiro zamagulu kuti muwerenge kokha (chidziwitso muzinthu zoterezi chikhoza kulembedwa kamodzi, pambuyo pake sichidzapezeka kuti chisinthidwe). class PostData {ntchito yapagulu __construct (chingwe chowerengera pagulu $mutu, tsiku lowerengera poyera DateTimeImmutable $date,) {}} $post = Post yatsopano('Title', /* … */); $post-> title = 'Zina'; > Cholakwika: Sitingathe kusintha katundu wowerengeka okha Post::$title
  • Syntax yatsopano yakhazikitsidwa pazinthu zoyimbidwa - kutseka tsopano kutha kupangidwa poyitanitsa ntchito ndikuyipereka mtengo "..." monga mkangano (ie myFunc(...) m'malo mwa Closure::fromCallable('myFunc ')): ntchito foo (int $a, int $b) {/* … */ } $foo = foo(…); $fo(a: ​​1, b: 2);
  • Onjezani chithandizo chonse chamitundu yodutsana, kukulolani kuti mupange mitundu yatsopano pophatikiza yomwe ilipo kale. Mosiyana ndi mitundu ya mgwirizano, yomwe imatanthawuza kusonkhanitsa kwa mitundu iwiri kapena kuposerapo, mitundu ya mphambano imafuna kukhalapo kwa mitundu yonse yomwe yatchulidwa, koma mitundu yonse yotchulidwa mu seti kuti idzazidwe. ntchito generateSlug(HasTitle&HasId $post) { return strtolower($post->getTitle()) . $post->getId(); }
  • Pali mtundu watsopano wa "never" womwe ungagwiritsidwe ntchito kudziwitsa osanthula static kuti ntchito idzathetsa kukhazikitsidwa kwa pulogalamu, mwachitsanzo mwa kusiya kapena kuchita ntchito yotuluka. ntchito dd (yophatikizika $input): osa {kutuluka; }
  • Ntchito yatsopano array_is_list yaperekedwa, yomwe imakupatsani mwayi wodziwa kuti makiyi omwe ali mgululi amakonzedwa motsatira kuchuluka kwa manambala, kuyambira pa 0: $list = [“a”, “b”, “c”]; array_is_list ($ list); // zoona $notAList = [1 => “a”, 2 => “b”, 3 => “c”]; array_is_list($notAList); // zabodza $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list ($ alsoNotAList); // zabodza
  • Tsopano mutha kugwiritsa ntchito mawu ofunikira "omaliza" kuti mupewe zosintha zamakalasi a makolo kuti zisasokonezedwe. class Foo {final public const X = "foo"; } kalasi Bar imakulitsa Foo {public const X = "bar"; > Cholakwika chachikulu: Bar ::X sichingapitirire nthawi zonse Foo::X }
  • Ntchito za fsync ndi fdatasync zikuperekedwa kuti zikakamize zosintha kuti zisungidwe ku cache ya disk. $file = fopen("sample.txt", "w"); fwrite($fayilo, "Zina mwazinthu"); ngati (fsync($file)) {echo "Fayilo yapitilizidwa bwino ku diski."; } fclose($fayilo);
  • Anawonjezera luso logwiritsa ntchito prefixes "0o" ndi "0O" kwa manambala octal, kuwonjezera pa chiyambi "0". 016 === 0o16; // zoona 016 === 0O16; // zoona
  • Akukonzedwa kuti achepetse kugwiritsa ntchito $GLOBALS, zomwe zingayambitse kuphwanya kuyanjana kwambuyo, koma zidzatheketsa kufulumizitsa kwambiri ntchito ndi magulu. Mwachitsanzo, kuthekera koletsa kulemba ku $GLOBALS ndikudutsa $GLOBALS ndi pointer ikuganiziridwa. Kuwunika kwa mapaketi a 2000 kunawonetsa kuti 23 okha ndi omwe angakhudzidwe ndi kusinthaku. Mwachitsanzo, ngati lingalirolo livomerezedwa, 8.1 sidzathandizanso mawu monga: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; osakhazikitsidwa($GLOBALS); by_ref($GLOBALS);
  • Njira zamkati ziyenera kubwezeranso mtundu wolondola. Mu PHP 8.1, kubwezera mtundu womwe sukugwirizana ndi kulengeza ntchito kutulutsa chenjezo, koma mu PHP 9.0 chenjezo lidzasinthidwa ndi cholakwika.
  • Ntchito idapitilira kusamutsa magwiridwe antchito kuchokera kuzinthu kupita kuzinthu zowongolera. Ntchito za finfo_* ndi imap_* zasamutsidwa kuzinthu.
  • Kupereka zikhalidwe zopanda pake ngati zotsutsana kuzinthu zamkati zolembedwa kuti sizingasinthe kwachotsedwa. Mu PHP 8.1, kugwiritsa ntchito zomanga ngati str_contains("chingwe", null) kumabweretsa chenjezo, ndipo mu PHP 9 kulakwitsa.
  • Thandizo lowonjezera la MurmurHash3 ndi xxHash hashing algorithms.

Source: opennet.ru

Kuwonjezera ndemanga