Te tukunga o te PHP 8.1 reo hotaka

I muri i te tau o te whakawhanaketanga, ka whakaatuhia te whakaputanga o te PHP 8.1 reo whakahōtaka. Kei roto i te peka hou he raupapa o nga ahuatanga hou, me te maha o nga huringa ka pakaru te hototahi.

Nga whakapainga matua i roto i te PHP 8.1:

  • He tautoko taapiri mo nga tatauranga, hei tauira, ka taea e koe te whakamahi i nga hanganga e whai ake nei: enum Status { case Pending; take Active; take Pūranga; } class Post { mahi tūmatanui __build( Tūnga tūmataiti $status = Tūnga::Tarewa; ) {} tūnga mahi tūmatanui setStatus(Tūnga $tūnga): void { // … } } $post->setStatus(Tūnga::Active);
  • He tautoko taapiri mo nga miro mama e kiia nei ko Fibers, ka taea e koe te whakahaere i nga miro mahi i te taumata iti. Ko te tautoko muka kua whakamaheretia kia taapirihia ki te angamahi Amphp me ReactPHP. $fiber = new Fiber(mahi (): void {$valueAfterResuming = Fiber::suspend('i muri i te whakatarewa'); // ... }); $valueAfterSuspending = $fiber->timata(); $fiber->resume('i muri i te whakaara ano');
  • Ko te whakatinanatanga o te keteroki waehere ahanoa (opcache) kua pai ake, ka taea te keteroki korero mo nga taonga tuku iho o te akomanga. Ko te arotautanga i taea ai te whakanui ake i te mahinga o etahi tono ma te 5-8%. Ko etahi atu arotautanga ko te arotautanga o te mahi JIT, te whakatinanatanga o te tautoko JIT mo te hoahoanga ARM64 (AArch64), te whakaterenga o te whakatau ingoa, te arotautanga o te timelib me nga whare pukapuka ext/date, te whakanui ake i te raupapatanga me te mahi deserialization, te arotautanga o te get_declared_classes(), pahū() , strtr() mahi, strnatcmp(), dechex(). I te nuinga o te waa, he 23.0% te piki ake o nga mahi mo Symfony Demo, me te 3.5% mo te WordPress.
  • Ko te kaiwhakahaere wetewete i roto i nga huānga "...$var", e taea ai te whakakapi i nga huānga o naianei i te wa e tautuhi ana i te huānga hou, kua whakaroahia hei tautoko i nga taviri aho (i mua ko nga kaitautuhi mamati anake i tautokohia). Hei tauira, ka taea e koe te whakamahi i te waehere: $array1 = [“a” => 1]; $array2 = ["b" => 2]; $array = [“a” => 0, …$array1, …$array2]; var_dump($array); // ["a" => 1, "b" => 2]
  • Ka whakaaetia te whakamahi i te kupu matua "hou" i roto i nga kaiwhakataki, penei i nga whakamaramatanga mahi hei tawhā taunoa, i nga huanga tautohetohe ranei. class MyController { mahi tūmatanui __build( Private Logger $logger = new NullLogger(), ) {} }
  • Ka taea te tohu i nga taonga karaehe mo te uru panui-anake (ko nga korero i roto i aua waahi ka taea te tuhi kotahi anake, ka mutu ka kore e waatea mo te whakarereke). class PostData { mahi tūmatanui __build( aho pānui anake $title, pānui tūmatanui DateTimeImmutable $date, ) {} } $post = Post hou('Taitara', /* … */); $post->title = 'Etahi atu'; > Hapa: Kaore e taea te whakarereke i nga taonga panui anake Post::$title
  • Kua whakatinanahia he wetereo hou mo nga mea ka taea te karanga - ka taea te katinga inaianei ma te karanga i tetahi mahi me te tuku i te uara "..." hei tohenga (arā. myFunc(...) hei utu mo te Katinga::fromCallable('myFunc ')): mahi foo (int $a, int $b) { /* … */ } $foo = foo(…); $foo(a: 1, b: 2);
  • Kua taapirihia te tautoko katoa mo nga momo whakawhitinga, ka taea e koe te hanga momo hou ma te whakakotahi i nga momo o mua. Kaore i rite ki nga momo uniana, e tautuhi ana i nga kohinga o nga momo momo e rua, neke atu ranei, ko nga momo whakawhitinga e hiahia ana kia kaua tetahi o nga momo kua whakarārangihia, engari ko nga momo kua tohua i roto i te huinga hei whakaki. function generateSlug(HasTitle&HasId $post) { return strtolower ($post->getTitle()) . $post->getId(); }
  • He momo hou "kaore" ka taea te whakamahi hei whakamohio i nga kaitirotiro pateko ka whakamutua e tetahi mahi te mahinga o te papatono, hei tauira ma te maka i te tuunga, ma te whakahaere i te mahi puta. mahi dd(mixed $input): kaua rawa { exit; }
  • Kua whakatakotoria he mahi hou array_is_list, e taea ai e koe te whakatau ko nga taviri o te huinga kua whakaritea kia rite ki te whakanui ake i nga uara tau, timata mai i te 0: $list = [“a”, “b”, “c”]; array_is_list($rarangi); // pono $notAList = [1 => “a”, 2 => “b”, 3 => “c”]; array_is_list($notAList); // false $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list($alsoNotAList); // teka
  • Ka taea e koe te whakamahi i te kupu matua "whakamutunga" hei aukati i nga taumau o te akomanga matua kia kore e whakakorehia. class Foo { final public const X = "foo"; } class Bar extends Foo { public const X = "bar"; > Hapa mate: Pae::X e kore e taea te whakakore i te taumau whakamutunga Foo::X }
  • Ko nga mahi fsync me te fdatasync e whakaarohia ana kia kaha nga huringa kia tiakina mai i te keteroki kōpae. $file = fopen("tauira.txt", "w"); fwrite($kōnae, "Etahi ihirangi"); if (fsync($file)) { echo "Kua tutuki pai te konae ki te kōpae."; } fclose($kōnae);
  • I taapirihia te kaha ki te whakamahi i nga tohu "0o" me te "0O" mo nga tau octal, hei taapiri atu ki te "0" i whakamahia i mua. 016 === 0o16; // pono 016 === 0O16; // pono
  • Ko te whakaaro kia whakawhāitihia te whakamahi i te $GLOBALS, ka takahia te hototahi whakamuri, engari ka taea te tere ake i nga mahi me nga raupapa. Hei tauira, kei te whakaarohia te kore o te tuhi ki te $GLOBALS me te tuku i te $GLOBALS ma te atatohu. Ko te tātaritanga o nga kohinga 2000 i kitea e 23 anake o ratou ka pa ki tenei huringa. Hei tauira, ki te whakaaetia te tono, ka kore a 8.1 e tautoko i nga korero penei: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $ARO; unset($GOBALS); by_ref($GLOBALS);
  • Ko nga tikanga o roto me whakahoki te momo tika. I roto i te PHP 8.1, ko te whakahoki mai i tetahi momo kaore i te rite ki te whakapuakitanga mahi ka puta he whakatupato, engari i te PHP 9.0 ka whakakapia te whakatupato ki te hapa.
  • I haere tonu te mahi ki te whakawhiti mahi mai i te whakamahi rauemi ki te raweke taonga. Ko nga mahi fifo_* me imap_* kua whakawhitia ki nga taonga.
  • Ko te tuku uara null hei tohenga ki nga mahi o roto kua tohua kaore e taea te whakakore. I roto i te PHP 8.1, ma te whakamahi i nga hanga penei i te str_contains("string", null) ka puta he whakatupato, a kei te PHP 9 he hapa.
  • He tautoko taapiri mo te MurmurHash3 me te xxHash hashing algorithm.

Source: opennet.ru

Tāpiri i te kōrero