Itusilẹ ti ede siseto PHP 8.1

Lẹhin ọdun kan ti idagbasoke, itusilẹ ti ede siseto PHP 8.1 ti gbekalẹ. Ẹka tuntun pẹlu lẹsẹsẹ awọn ẹya tuntun, ati ọpọlọpọ awọn ayipada ti o fọ ibamu.

Awọn ilọsiwaju bọtini ni PHP 8.1:

  • Atilẹyin ti a ṣafikun fun awọn ikawe, fun apẹẹrẹ, o le lo awọn igbelewọn wọnyi: enum Ipo {case ni isunmọtosi; irú Nṣiṣẹ; Akojopo apoti; } kilasi Ifiweranṣẹ {iṣẹ gbogbo eniyan __construct( Ipo ikọkọ $status = Ipo :: Ni isunmọtosi); ) {} iṣẹ gbogbo eniyan setStatus(Ipo $status): ofo {// … } } $post->setStatus(Ipo:: Nṣiṣẹ);
  • Atilẹyin ti a ṣafikun fun awọn okun iwuwo fẹẹrẹ ti a pe ni Fibers, eyiti o gba ọ laaye lati ṣakoso awọn okun ipaniyan ni ipele kekere. Atilẹyin fiber ti gbero lati ṣafikun si Amphp ati awọn ilana ReactPHP. $fiber = Fiber titun (iṣẹ (): ofo {$valueAfterResuming = Fiber :: daduro ('lẹhin ti idaduro'); // ...}); $valueAfterSuspending = $fiber->bẹrẹ (); $ fiber-> bẹrẹ ('lẹhin ti bẹrẹ');
  • Imuse ti kaṣe koodu ohun (opcache) ti ni ilọsiwaju, ti o jẹ ki o ṣee ṣe lati kaṣe alaye nipa ogún kilasi. Imudara jẹ ki o ṣee ṣe lati mu iṣẹ diẹ ninu awọn ohun elo pọ si nipasẹ 5-8%. Awọn iṣapeye miiran pẹlu iṣapeye ti iṣẹ JIT, imuse ti atilẹyin JIT fun faaji ARM64 (AArch64), isare ti ipinnu orukọ, iṣapeye ti timelib ati awọn ile-ikawe ext/ọjọ, isọdọkan pọ si ati iṣẹ isọdọtun, iṣapeye ti get_declared_classes (), gbamu () , strtr () iṣẹ, strnatcmp (), dechex (). Ni gbogbogbo, ilosoke 23.0% ni iṣẹ fun Symfony Demo, ati 3.5% fun Wodupiresi.
  • Oniṣẹ ṣiṣi silẹ inu awọn akojọpọ “...$var”, eyiti o ngbanilaaye aropo awọn akojọpọ ti o wa tẹlẹ nigbati o ba n ṣalaye opo tuntun kan, ti faagun lati ṣe atilẹyin awọn bọtini okun (tẹlẹ awọn idanimọ oni-nọmba nikan ni atilẹyin). Fun apẹẹrẹ, o le lo ni koodu: $array1 = [“a” => 1]; $array2 = ["b" => 2]; $array = [“a” => 0, …$array1, …$array2]; var_dump ($ orun); // ["a" => 1, "b" => 2]
  • O gba ọ laaye lati lo koko “tuntun” ni awọn olupilẹṣẹ, gẹgẹbi ninu awọn asọye iṣẹ bi paramita aiyipada tabi ni awọn abuda ariyanjiyan. kilasi MyController {iṣẹ gbogbo eniyan __construct( Logger ikọkọ $logger = NullLogger tuntun(), ) {}}
  • O ṣee ṣe lati samisi awọn ohun-ini kilasi fun iwọle kika-nikan (alaye ni iru awọn ohun-ini le ṣee kọ lẹẹkan, lẹhin eyi kii yoo wa fun iyipada). kilasi PostData {iṣẹ ti gbogbo eniyan __construct(okun kika $akọle ti gbogbo eniyan, DateTimeImmutable $date, ) {}} $post = Ifiweranṣẹ tuntun ('Title', /* … */); $post->akọle = 'Omiiran'; > Aṣiṣe: Ko le yipada Post ohun ini kika nikan :: akọle
  • A ti ṣe imuse sintasi tuntun fun awọn ohun ti a le pe - pipade le ni agbekalẹ bayi nipa pipe iṣẹ kan ati gbigbe ni iye “…” gẹgẹbi ariyanjiyan (ie myFunc (...) dipo Tiipa :: lati Callable ('myFunc) ')): foo iṣẹ (int $a, int $b) {/* … */ } $foo = foo(...); $foo (a: 1, b: 2);
  • Ṣe afikun atilẹyin ni kikun fun awọn iru ikorita, gbigba ọ laaye lati ṣẹda awọn iru tuntun nipa apapọ awọn ti o wa tẹlẹ. Ko dabi awọn iru iṣọkan, eyiti o ṣalaye awọn akojọpọ ti awọn oriṣi meji tabi diẹ sii, awọn iru ikorita nilo wiwa ti kii ṣe eyikeyi ninu awọn oriṣi ti a ṣe akojọ, ṣugbọn gbogbo awọn iru pàtó kan ninu ṣeto lati kun. functiongeneSlug(HasTitle&HasId $post) {pada strtolower($post->getTitle()) . $ post-> getId (); }
  • Iru tuntun kan wa “kò” ti o le ṣee lo lati sọ fun awọn atunnkanka aimi pe iṣẹ kan yoo fopin si ipaniyan eto, fun apẹẹrẹ nipa jiju imukuro tabi ṣiṣe iṣẹ ijade naa. iṣẹ dd (dapọ $ input): rara {jade; }
  • A ti dabaa iṣẹ tuntun array_is_list, eyiti o fun ọ laaye lati pinnu pe awọn bọtini ti o wa ninu titobi naa ti ṣeto ni ọna ti o pọ si awọn iye nọmba, bẹrẹ lati 0: $list = [“a”, “b”, “c”]; array_is_list ($ akojọ); // otitọ $notAList = [1 => "a", 2 => "b", 3 => "c"]; array_is_list ($ notAList); // false $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list ($ tunNotAList); // iro
  • O le lo ọrọ-ọrọ "ipari" ni bayi lati ṣe idiwọ awọn ibakan kilasi awọn obi lati jẹ ki o bori. kilasi Foo {ipari ti gbangba const X = "foo"; } Pẹpẹ kilasi gbooro Foo { public const X = "ọgi"; > Aṣiṣe apaniyan: Pẹpẹ :: X ko le ṣe agbekọja Foo nigbagbogbo: X }
  • Awọn iṣẹ fsync ati fdatasync ni a dabaa lati fi ipa mu awọn ayipada lati wa ni fipamọ lati kaṣe disk. $faili = fopen ("sample.txt", "w"); fwrite ($ faili, "Diẹ ninu akoonu"); ti (fsync($faili))) { iwoyi "Faili ti wa ni aṣeyọri si disk."; } fclose($faili);
  • Ṣe afikun agbara lati lo awọn ami-iṣaaju "0o" ati "0O" fun awọn nọmba octal, ni afikun si ami-iṣaaju ti a lo tẹlẹ "0". 016 === 0o16; // otitọ 016 === 0O16; // otitọ
  • O ti wa ni dabaa lati yiyan idinwo awọn lilo ti $ GLOBALS, eyi ti yoo ja si a ṣẹ sẹhin ibamu, sugbon yoo jẹ ki o ṣee ṣe lati mu yara awọn iṣẹ-ṣiṣe ni pataki pẹlu awọn akojọpọ. Fun apẹẹrẹ, o ṣeeṣe lati pa kikọ si $ GLOBALS ati gbigbe $ GLOBALS nipasẹ itọka ni a gbero. Iṣiro ti awọn idii 2000 fihan pe 23 nikan ninu wọn yoo ni ipa nipasẹ iyipada yii. Fun apẹẹrẹ, ti imọran ba fọwọsi, 8.1 kii yoo ṣe atilẹyin awọn ọrọ bi: $ GLOBALS = []; $AGBAYE += []; $ GLOBALS = & $ x; $x = & $ GLOBALS; aiṣeto ($ GLOBALS); nipasẹ_ref ($ GLOBALS);
  • Awọn ọna inu yẹ ki o pada iru ti o tọ bayi. Ni PHP 8.1, ipadabọ iru ti ko baramu ikede iṣẹ yoo ṣe ikilọ kan, ṣugbọn ni PHP 9.0 ikilọ yoo rọpo pẹlu aṣiṣe kan.
  • Iṣẹ tẹsiwaju lori gbigbe awọn iṣẹ lati lilo awọn orisun si ifọwọyi awọn nkan. Awọn iṣẹ finfo_* ati imap_* ti gbe lọ si awọn nkan.
  • Gbigbe awọn iye asan bi awọn ariyanjiyan si awọn iṣẹ inu ti o samisi ti kii ṣe asan ni a ti parẹ. Ni PHP 8.1, lilo awọn itumọ bi str_contains ("okun", asan) yoo ja si ikilọ, ati ni PHP 9 si aṣiṣe kan.
  • Atilẹyin ti a ṣafikun fun MurmurHash3 ati xxHash hashing algorithms.

orisun: opennet.ru

Fi ọrọìwòye kun