Sakin harshen shirye-shirye na PHP 8.1

Bayan shekara guda na ci gaba, an gabatar da sakin harshen shirye-shirye na PHP 8.1. Sabon reshe ya ƙunshi jerin sabbin abubuwa, da kuma canje-canje da yawa waɗanda ke karya daidaituwa.

Mahimmin haɓakawa a cikin PHP 8.1:

  • Ƙara goyon baya don ƙididdigewa, alal misali, yanzu za ku iya amfani da gine-gine masu zuwa: enum Status { case Pending; harka Mai aiki; An Ajiye akwati; } aji Post {aikin jama'a __construct( Matsayin sirri $status = Matsayi :: A jiran;) {} aikin jama'a saitinStatus(Matsalar $status): banza {// … } } $ bayan->setStatus(Status:: Active);
  • Ƙara tallafi don zaren masu nauyi da ake kira Fibers, waɗanda ke ba ku damar sarrafa zaren kisa a ƙaramin matakin. Ana shirin ƙara tallafin fiber zuwa tsarin Amphp da ReactPHP. $fiber = sabon Fiber (aiki (): banza {$ valueAfterResuming = Fiber :: dakatar ('bayan dakatarwa'); // ...}); $valueAfterSuspending = $fiber->fara(); $ fiber-> ci gaba ('bayan ya ci gaba');
  • An inganta aiwatar da cache code na abu (opcache), yana ba da damar adana bayanai game da gadon aji. Ingantawa ya ba da damar haɓaka aikin wasu aikace-aikacen da kashi 5-8%. Sauran haɓakawa sun haɗa da haɓaka aikin JIT, aiwatar da tallafin JIT don gine-ginen ARM64 (AArch64), haɓaka ƙudurin suna, haɓaka ɗakunan karatu na lokaci da ext/kwanaki, haɓaka haɓakawa da aikin ɓarna, haɓakar get_declared_classes (), fashe () , strtr() aiki, strnatcmp(), dechex(). Gabaɗaya, akwai haɓaka 23.0% a cikin aiki don Symfony Demo, da 3.5% don WordPress.
  • An tsawaita ma'aikacin kwance kayan cikin jeri-jeri "...$var", wanda ke ba da damar sauya tsararrun da ake da su lokacin da za a ayyana sabon tsararru, don tallafawa maɓallan kirtani (a baya masu gano dijital kawai ake tallafawa). Misali, yanzu zaku iya amfani da lambar: $array1 = [“a” => 1]; $array2 = ["b" => 2]; $array = [“a” => 0, …$array1, …$array2]; var_dump($array); // ["a" => 1, "b" => 2]
  • An ba da izinin amfani da kalmar "sabon" a cikin masu farawa, kamar a cikin ma'anar aiki azaman ma'auni na asali ko a cikin halayen gardama. class MyController {aikin jama'a __construct(na sirri Logger $logger = sabon NullLogger(), ) {}}
  • Yana yiwuwa a yi alama kaddarorin aji don samun damar karantawa kawai (bayanai a cikin irin waɗannan kaddarorin za a iya rubuta su sau ɗaya kawai, bayan haka ba za a sami canji ba). class PostData {aikin jama'a __ ginawa (labarai $ taken jama'a kawai, karatun jama'a kawai DateTimeImmutable $date, ) {}} $post = sabon Post('Title', /* … */); $post-> take = 'Saura'; > Kuskure: Ba za a iya gyara Post dukiya kawai ba :: $ take
  • An aiwatar da sabon haɗin gwiwa don abubuwan da za a iya kira - ana iya ƙirƙirar rufewa ta hanyar kiran aiki da ƙaddamar da ƙimar "..." a matsayin hujja (watau myFunc (...) maimakon Closure :: daga Callable ('myFunc). ')): foo (int $a, int $b) {/* … */ } $foo = foo(...); $fo (a: 1, b: 2);
  • Ƙara cikakken goyon baya ga nau'ikan haɗin gwiwa, yana ba ku damar ƙirƙirar sabbin nau'ikan ta hanyar haɗa waɗanda suke. Ba kamar nau'ikan ƙungiyoyi ba, waɗanda ke ayyana tarin nau'ikan nau'ikan biyu ko fiye, nau'ikan haɗin gwiwa suna buƙatar kasancewar ba kowane nau'in da aka lissafa ba, amma duk takamaiman nau'ikan da ke cikin saitin don cika. aiki yana haifar daSlug (HasTitle&HasId $post) {komawa strtolower ($ post->getTitle()) . $post->getId(); }
  • Akwai sabon nau'in "ba" da za a iya amfani da shi don sanar da masu nazari a tsaye cewa wani aiki zai ƙare aiwatar da shirin, misali ta hanyar jifa keɓantawa ko aiwatar da aikin fita. aiki dd(gauraye $shigar): taba {fita; }
  • An gabatar da sabon aikin array_is_list, wanda ke ba ka damar tantance cewa maɓallan da ke cikin tsararrun an tsara su ne don haɓaka ƙimar lambobi, farawa daga 0: $list = [“a”, “b”, “c”]; array_is_list ($ list); // gaskiya $notAList = [1 => "a", 2 => "b", 3 => "c"]; array_is_list ($ notALIst); // false $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list ($ alsoNotALIst); // karya
  • Yanzu zaku iya amfani da kalmar "ƙarshe" don hana ƙwaƙƙwaran ajin iyaye. class Foo {karshen jama'a const X = "foo"; } Bar aji yana faɗaɗa Foo { jama'a const X = "bar"; Kuskuren kisa: Bar :: X ba zai iya kawar da kullun Foo :: X }
  • Ayyukan fsync da fdatasync an gabatar da su don tilasta canje-canje don adanawa daga ma'ajin diski. $file = fopen ("sample.txt", "w"); fwrite ($ fayil, "Wasu abun ciki"); idan (fsync ($ file)) {echo"An yi nasarar dage fayil ɗin zuwa diski."; } fclose ($ fayil);
  • An ƙara ikon yin amfani da prefixes "0o" da "0O" don lambobin octal, ban da prefix "0" da aka yi amfani da su a baya. 016 === 0o16; // gaskiya 016 === 0O16; // gaskiya
  • An ba da shawarar a zaɓi iyakance amfani da $ GLOBALS, wanda zai haifar da cin zarafi na dacewa da baya, amma zai ba da damar haɓaka ayyuka tare da tsararru. Misali, ana la'akari da yuwuwar kashe rubutu zuwa $GLOBALS da wuce $ GLOBALS ta hanyar nuni. Wani bincike na fakiti 2000 ya nuna cewa 23 daga cikinsu ne kawai wannan canjin zai shafa. Misali, idan an amince da shawarar, 8.1 ba za ta ƙara goyan bayan maganganu kamar: $GLOBALS = []; $GLOBALS += []; $GLOBALS = & $ x; $x = & $DUNIYA; unset ($ GLOBALS); by_ref ($ GLOBALS);
  • Hanyoyin ciki yakamata yanzu su dawo daidai nau'in. A cikin PHP 8.1, dawo da nau'in da bai dace da sanarwar aikin ba zai haifar da gargaɗi, amma a cikin PHP 9.0 za a maye gurbin gargaɗin da kuskure.
  • An ci gaba da aiki akan canja wurin ayyuka daga amfani da albarkatu zuwa sarrafa abubuwa. An canza ayyukan finfo_* da imap_* zuwa abubuwa.
  • Ƙimar da ba ta da ƙima kamar yadda gardama zuwa ayyuka na ciki waɗanda ba za a iya warware su ba an soke su. A cikin PHP 8.1, yin amfani da ginin kamar str_contains("string", null) zai haifar da faɗakarwa, kuma a cikin PHP 9 zuwa kuskure.
  • Ƙara tallafi don MurmurHash3 da xxHash hashing algorithms.

source: budenet.ru

Add a comment