Pagpagawas sa PHP 8.1 programming language

Human sa usa ka tuig nga kalamboan, ang pagpagawas sa PHP 8.1 programming language gipresentar. Ang bag-ong sanga naglakip sa usa ka serye sa mga bag-ong bahin, ingon man usab sa daghang mga pagbag-o nga makaguba sa pagkaangay.

Pangunang mga kalamboan sa PHP 8.1:

  • Gidugang nga suporta alang sa mga enumerasyon, pananglitan, mahimo nimong gamiton ang mosunod nga mga konstruksyon: enum Status { case Pending; kaso Aktibo; kaso Gi-archive; } class Post {public function __construct(pribado nga Status $status = Status::Pending; ) {} public function setStatus(Status $status): void { // … } } $post->setStatus(Status::Active);
  • Gidugang nga suporta alang sa gaan nga mga hilo nga gitawag og Fibers, nga nagtugot kanimo sa pagdumala sa mga hilo sa pagpatuman sa ubos nga lebel. Ang suporta sa fiber giplano nga idugang sa Amphp ug ReactPHP frameworks. $fiber = bag-ong Fiber(function (): void {$valueAfterResuming = Fiber::suspinde('human masuspinde'); // ... }); $valueAfterSuspending = $fiber->start(); $fiber->resume('human ipadayon');
  • Ang pagpatuman sa cache sa object code (opcache) gipauswag, nga nagpaposible sa pag-cache sa impormasyon bahin sa kabilin sa klase. Ang pag-optimize nagpaposible nga madugangan ang pasundayag sa pipila nga mga aplikasyon sa 5-8%. Ang uban nga mga pag-optimize naglakip sa pag-optimize sa operasyon sa JIT, pagpatuman sa suporta sa JIT alang sa arkitektura sa ARM64 (AArch64), pagpadali sa resolusyon sa ngalan, pag-optimize sa timelib ug ext/date nga mga librarya, pagpataas sa serialization ug deserialization nga performance, pag-optimize sa get_declared_classes(), explode() , strtr() function, strnatcmp(), dechex(). Sa kinatibuk-an, adunay 23.0% nga pagtaas sa pasundayag alang sa Symfony Demo, ug 3.5% alang sa WordPress.
  • Ang operator sa pag-unpack sa sulod sa mga arrays "...$var", nga nagtugot sa pag-ilis sa mga kasamtangan nga arrays sa pag-define sa usa ka bag-ong array, gipalugway aron suportahan ang mga string key (kaniadto mga digital identifier lang ang gisuportahan). Pananglitan, mahimo nimong gamiton ang code: $array1 = [“a” => 1]; $array2 = ["b" => 2]; $array = [“a” => 0, …$array1, …$array2]; var_dump($array); // ["a" => 1, "b" => 2]
  • Gitugotan ang paggamit sa "bag-o" nga keyword sa mga inisyal, sama sa mga kahulugan sa function ingon usa ka default nga parameter o sa mga hiyas sa argumento. class MyController { public function __construct(pribado nga Logger $logger = new NullLogger(), ) {} }
  • Posible nga markahan ang mga kabtangan sa klase alang sa read-only nga pag-access (ang impormasyon sa ingon nga mga kabtangan mahimo ra isulat kausa, pagkahuman dili na kini magamit alang sa pagbag-o). class PostData { public function __construct( public readonly string $title, public readonly DateTimeImmutable $date, ) {} } $post = new Post('Titulo', /* … */); $post->title = 'Uban'; > Sayop: Dili mausab ang readonly property Post::$title
  • Usa ka bag-ong syntax ang gipatuman alang sa matawag nga mga butang - usa ka pagsira mahimo na karon pinaagi sa pagtawag sa usa ka function ug pagpasa niini sa kantidad nga "..." ingon usa ka argumento (ie myFunc(...) imbes nga Closure::fromCallable('myFunc ')): function foo (int $a, int $b) { /* … */ } $foo = foo(…); $foo(a: 1, b: 2);
  • Gidugang ang bug-os nga suporta alang sa mga tipo sa intersection, nga nagtugot kanimo sa paghimo og bag-ong mga tipo pinaagi sa paghiusa sa mga naa na. Dili sama sa mga tipo sa unyon, nga naghubit sa mga koleksyon sa duha o daghan pa nga mga tipo, ang mga tipo sa intersection nanginahanglan nga adunay presensya nga dili bisan unsa sa nalista nga mga tipo, apan ang tanan nga mga piho nga tipo sa set nga mapuno. function generateSlug(HasTitle&HasId $post) { return strtolower ($post->getTitle()) . $post->getId(); }
  • Adunay usa ka bag-ong tipo nga "dili gyud" nga magamit aron ipahibalo ang mga static nga analista nga ang usa ka function mohunong sa pagpatuman sa programa, pananglitan pinaagi sa paglabay sa usa ka eksepsiyon o pagpatuman sa exit function. function dd(mixed $input): dili gayud { exit; }
  • Usa ka bag-ong function array_is_list ang gisugyot, nga nagtugot kanimo sa pagtino nga ang mga yawe sa array gihan-ay sa han-ay sa pagdugang sa numerical values, sugod sa 0: $list = [“a”, “b”, “c”]; array_is_list($lista); // true $notAList = [1 => “a”, 2 => “b”, 3 => “c”]; array_is_list($notAList); // false $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list($alsoNotAList); // bakak
  • Mahimo nimong gamiton ang "katapusan" nga keyword aron mapugngan ang mga kanunay nga klase sa ginikanan nga ma-override. class Foo {katapusan nga public const X = "foo"; } class Bar nagpalapad sa Foo {public const X = "bar"; > Makamatay nga sayop: Ang Bar:: X dili maka-override sa katapusang kanunay nga Foo:: X }
  • Ang mga function sa fsync ug fdatasync gisugyot aron mapugos ang mga pagbag-o nga maluwas gikan sa cache sa disk. $file = fopen("sample.txt", "w"); fwrite($file, "Pipila ka sulod"); if (fsync ($ file)) { echo "Ang file malampuson nga gipadayon sa disk."; } fclose($file);
  • Gidugang ang abilidad sa paggamit sa mga prefix nga "0o" ug "0O" alang sa octal nga mga numero, dugang sa gigamit kaniadto nga prefix nga "0". 016 === 0o16; // tinuod 016 === 0O16; // tinuod
  • Gisugyot nga pilion nga limitahan ang paggamit sa $GLOBALS, nga mosangput sa usa ka paglapas sa atrasado nga pagkaangay, apan himuon nga posible nga labi ka mapadali ang mga operasyon nga adunay mga arrays. Pananglitan, ang posibilidad sa pag-disable sa pagsulat sa $GLOBALS ug pagpasa sa $GLOBALS pinaagi sa pointer gikonsiderar. Ang pagtuki sa 2000 ka pakete nagpakita nga 23 lang niini ang maapektuhan niini nga kausaban. Pananglitan, kung aprobahan ang sugyot, ang 8.1 dili na mosuporta sa mga ekspresyon sama sa: $GLOBALS = []; $GLOBALS += []; $GLOBAL =& $x; $x =& $GLOBALS; wala mabutang ($ GLOBALS); ni_ref($GLOBALS);
  • Ang mga internal nga pamaagi kinahanglan nga ibalik ang husto nga tipo. Sa PHP 8.1, ang pagbalik sa tipo nga dili motakdo sa function declaration mopatunghag pasidaan, apan sa PHP 9.0 ang pasidaan mapulihan og sayop.
  • Nagpadayon ang pagtrabaho sa pagbalhin sa mga gimbuhaton gikan sa paggamit sa mga kapanguhaan hangtod sa pagmaniobra sa mga butang. Ang mga function sa fiinfo_* ug imap_* gibalhin sa mga butang.
  • Ang pagpasa sa null values ​​isip argumento sa internal functions nga gimarkahan nga non-nullable wala na gamita. Sa PHP 8.1, ang paggamit sa mga konstruksyon sama sa str_contains("string", null) mosangpot sa usa ka pasidaan, ug sa PHP 9 sa usa ka sayup.
  • Gidugang nga suporta alang sa MurmurHash3 ug xxHash hashing algorithm.

Source: opennet.ru

Idugang sa usa ka comment