Sgaoileadh cànain prògramaidh PHP 8.1

Às deidh bliadhna de leasachadh, chaidh foillseachadh cànan prògramadh PHP 8.1 a thaisbeanadh. Tha am meur ùr a’ toirt a-steach sreath de fheartan ùra, a bharrachd air grunn atharrachaidhean a bhriseas co-chòrdalachd.

Prìomh leasachaidhean ann am PHP 8.1:

  • Taic a bharrachd airson àireamhachd, mar eisimpleir, faodaidh tu a-nis na togalaichean a leanas a chleachdadh: enum Inbhe { cùis ri feitheamh; cùis Gnìomhach; cùis Tasglann; } clas Post { gnìomh poblach __construct( Inbhe prìobhaideach $status = Inbhe:: ri thighinn; ) {} gnìomh poblach setStatus(Inbhe $ status): falamh {// … } } $ post-> setStatus(Inbhe:: Gnìomhach);
  • Taic a bharrachd airson snàithleanan aotrom ris an canar Fibres, a leigeas leat snàithleanan cur gu bàs a riaghladh aig ìre ìosal. Thathas an dùil taic fiber a chuir ri frèaman Amphp agus ReactPHP. $ fiber = Fiber ùr (gnìomh (): falamh { $valueAfterResuming = Fibre:: stad ('às deidh stad'); // ... }); $valueAfterSuspending = $fiber-> tòiseachadh(); $fiber-> ath-thòiseachadh ('às dèidh ath-thòiseachadh');
  • Chaidh buileachadh tasgadan còd an nì (opcache) a leasachadh, ga dhèanamh comasach fiosrachadh a thasgadh mu oighreachd clas. Rinn optimization comas coileanadh cuid de thagraidhean àrdachadh 5-8%. Tha optimizations eile a’ toirt a-steach optimization de ghnìomhachd JIT, buileachadh taic JIT airson ailtireachd ARM64 (AAarch64), luathachadh fuasgladh ainm, optimization leabharlann timelib agus ext / date, barrachd sreathachadh agus coileanadh deserialization, optimization de get_declared_classes (), spreadhadh () , strtr () gnìomh, strnatcmp (), dechex (). San fharsaingeachd, tha àrdachadh 23.0% ann an coileanadh airson Symfony Demo, agus 3.5% airson WordPress.
  • Chaidh an gnìomhaiche dì-phacadh taobh a-staigh arrays “...$var”, a leigeas le arrays a th’ ann mu thràth a chuir an àite nuair a thathar a’ mìneachadh sreath ùr, a leudachadh gus taic a thoirt do iuchraichean sreang (roimhe seo cha robh ach aithnichearan didseatach a’ faighinn taic). Mar eisimpleir, faodaidh tu a-nis a chleachdadh sa chòd: $array1 = [“a” => 1]; $array2 = [ "b" => 2]; $array = [“a” => 0, …$array1, …$array2]; var_dump ($ array); // ["a" => 1, "b" => 2]
  • Tha e ceadaichte am prìomh fhacal “ùr” a chleachdadh ann an tùsairean, leithid ann am mìneachaidhean gnìomh mar paramadair bunaiteach no ann am buadhan argamaid. clas MyController { gnìomh poblach __construct( Logger prìobhaideach $ logger = NullLogger ùr ( ), ) {} }
  • Tha e comasach feartan clas a chomharrachadh airson ruigsinneachd leughaidh a-mhàin (chan urrainnear fiosrachadh anns na togalaichean sin a sgrìobhadh ach aon turas, agus às deidh sin cha bhith e ri fhaighinn airson atharrachadh). clas PostData { gnìomh poblach __construct (sreang leughaidh poblach a-mhàin $title, leughadh poblach a-mhàin DateTimeImmutable $ date, ) {} } $ post = post ùr ('Title', /* ... */); $post->title = 'Eile'; > Mearachd: Cha ghabh an t-seilbh leughaidh a-mhàin atharrachadh Post::$title
  • Chaidh co-chòrdadh ùr a chuir an gnìomh airson nithean a ghabhas gairm - faodar dùnadh a-nis a chruthachadh le bhith a’ gairm gnìomh agus a’ toirt seachad an luach “...” mar argamaid (i.e. myFunc (...) an àite Closure::fromCallable(’myFunc) ')): gnìomh foo (int $a, int $b) { /* ... */ } $ foo = foo(…); $ foo (a: 1, b: 2);
  • Chuir sinn làn thaic ris airson seòrsaichean eadar-ghearraidh, a’ toirt cothrom dhut seòrsaichean ùra a chruthachadh le bhith a’ cothlamadh an fheadhainn a th’ ann mar-thà. Eu-coltach ri seòrsaichean aonaidh, a tha a’ mìneachadh cruinneachaidhean de dhà sheòrsa no barrachd, feumaidh seòrsaichean eadar-ghearraidh làthaireachd chan e gin de na seòrsaichean clàraichte, ach a h-uile seòrsa ainmichte san t-seata ri lìonadh. gnìomh GenerationSlug(HasTitle&HasId $ post) {till strtolower($post->getTitle()). $ post-> getId(); }
  • Tha seòrsa ùr “never” ann a dh’fhaodar a chleachdadh gus innse do luchd-anailis statach gun cuir gnìomh crìoch air coileanadh prògram, mar eisimpleir le bhith a’ tilgeil eisgeachd no a’ cur an gnìomh a’ ghnìomh fàgail. gnìomh dd (measgaichte $ input): na bi {fàgail; }
  • Chaidh gnìomh ùr array_is_list a mholadh, a leigeas leat dearbhadh gu bheil na h-iuchraichean san raon air an rèiteachadh ann an òrdugh àrdachadh luachan àireamhach, a’ tòiseachadh bho 0: $list = [“a”, “b”, “c”]; array_is_list($list); // true $notAList = [1 => “a”, 2 => “b”, 3 => “c”]; array_is_list($ notAList); // false $alsoNotAList = [ "a" => "a", "b" => "b", "c" => "c"]; array_is_list($alsoNotAList); // breugach
  • Faodaidh tu a-nis am prìomh fhacal “deireannach” a chleachdadh gus casg a chuir air comharran clas pàrant bho bhith air an toirt thairis. clas Foo { final public const X = "foo"; } clas Bar a' leudachadh Foo { public const X = "bàr"; > Mearachd mharbhtach: Bàr :: Chan urrainn dha X a dhol thairis air an seasmhach deireannach Foo :: X }
  • Tha na gnìomhan fsync agus fdatasync air am moladh gus toirt air atharrachaidhean a shàbhaladh bhon tasgadan diosc. $file = fopen ("sample.txt", "w"); fwrite($file, "Cuid de shusbaint"); if (fsync($file)) { mac-talla "Chaidh am faidhle a leantainn gu soirbheachail air an diosg."; } fclose ($ faidhle);
  • Chuir sinn ris a’ chomas na ro-leasachain “0o” agus “0O” a chleachdadh airson àireamhan octal, a bharrachd air an ro-leasachan “0” a chaidh a chleachdadh roimhe. 016 === 0o16; // fìor 016 === 0O16; // fìor
  • Thathas a’ moladh cleachdadh $ GLOBALS a chuingealachadh gu roghnach, a lean gu briseadh air co-chòrdalachd air ais, ach a nì e comasach gnìomhachd le arrays a luathachadh gu mòr. Mar eisimpleir, thathas a’ beachdachadh air comas sgrìobhadh gu $GLOBALS a chur à comas agus $GLOBALS a thoirt seachad le comharraiche. Sheall sgrùdadh air 2000 pasgan nach biodh buaidh aig an atharrachadh seo ach air 23 dhiubh. Mar eisimpleir, ma thèid gabhail ris a’ mholadh, cha chuir 8.1 taic ri abairtean mar: $GLOBALS = []; $GLOBALS +=[]; $GLOBALS =& $x; $x =& $GLOBALS; unset ($ GLOBALS); by_ref($GLOBALS);
  • Bu chòir do dhòighean taobh a-staigh a-nis an seòrsa ceart a thilleadh. Ann am PHP 8.1, le bhith a 'tilleadh seòrsa nach eil a' freagairt ris an dearbhadh gnìomh bheir sin rabhadh, ach ann am PHP 9.0 thèid mearachd a chuir na àite.
  • Lean obair air adhart gus gnìomhan a ghluasad bho bhith a’ cleachdadh ghoireasan gu bhith a’ làimhseachadh nithean. Chaidh na gnìomhan finfo_* agus imap_* a ghluasad gu nithean.
  • Tha a bhith a’ dol seachad air luachan null mar argamaidean gu gnìomhan taobh a-staigh comharraichte neo-null air a bhith air a mholadh. Ann am PHP 8.1, le bhith a’ cleachdadh constructs mar str_contains (“string”, null) thig rabhadh, agus ann am PHP 9 gu mearachd.
  • Taic a bharrachd airson algorithms hashing MurmurHash3 agus xxHash.

Source: fosgailtenet.ru

Cuir beachd ann