Tso tawm PHP 8.1 programming lus

Tom qab ib xyoos ntawm kev txhim kho, kev tso tawm ntawm PHP 8.1 programming lus tau nthuav tawm. Cov ceg tshiab suav nrog cov yam ntxwv tshiab, nrog rau ntau qhov kev hloov pauv uas cuam tshuam kev sib raug zoo.

Kev txhim kho tseem ceeb hauv PHP 8.1:

  • Ntxiv kev txhawb nqa rau kev suav, piv txwv li, tam sim no koj tuaj yeem siv cov qauv hauv qab no: enum Status { case Pending; Case Active; Case Archived; } class Post { public function __construct(private Status $status = Status::Pending; ) {} public function setStatus(Status $status): void { // … } } $post->setStatus(Status::Active);
  • Ntxiv kev txhawb nqa rau lub teeb yuag threads hu ua Fibers, uas tso cai rau koj los tswj kev ua tiav xov ntawm qib qis. Kev them nyiaj yug fiber ntau yog npaj los ntxiv rau Amphp thiab ReactPHP lub moj khaum. $fiber = tshiab Fiber(function (): void {$valueAfterResuming = Fiber:: suspend('tom qab suspending'); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume('tom qab rov pib dua');
  • Kev siv cov khoom code cache (opcache) tau raug txhim kho, ua rau nws muaj peev xwm cache cov ntaub ntawv hais txog cov cuab yeej cuab tam hauv chav kawm. Optimization ua rau nws muaj peev xwm ua kom cov kev ua tau zoo ntawm qee qhov kev siv los ntawm 5-8%. Lwm qhov kev ua kom zoo tshaj plaws suav nrog kev ua kom zoo ntawm JIT kev ua haujlwm, kev siv JIT kev txhawb nqa rau ARM64 architecture (AArch64), acceleration ntawm lub npe daws teeb meem, optimization ntawm timelib thiab ext / hnub cov tsev qiv ntawv, nce serialization thiab deserialization kev ua tau zoo, optimization ntawm get_declared_classes(), explode() , strtr() muaj nuj nqi, strnatcmp(), dechex(). Feem ntau, muaj 23.0% nce hauv kev ua tau zoo rau Symfony Demo, thiab 3.5% rau WordPress.
  • Tus neeg teb xov tooj unpacking hauv arrays "...$var", uas tso cai hloov cov arrays uas twb muaj lawm thaum txhais cov array tshiab, tau txuas ntxiv los txhawb cov hlua khi (yav dhau los tsuas yog cov cim digital tau txais kev txhawb nqa). Piv txwv li, tam sim no koj tuaj yeem siv hauv code: $array1 = ["a" => 1]; $array2 = ["b" => 2]; $array = [β€œa” => 0, …$array1, …$array2]; var_dump($array); // ["a" => 1, "b" => 2]
  • Nws raug tso cai siv lo lus "tshiab" hauv cov lus pib, xws li hauv cov ntsiab lus ua haujlwm raws li qhov tsis raug cai lossis hauv cov ntsiab lus sib cav. class MyController { public function __construct( private Logger $logger = new NullLogger(), ) {} }
  • Nws tuaj yeem kos cov khoom hauv chav kawm rau kev nyeem nkaus xwb (cov ntaub ntawv hauv cov khoom no tsuas yog sau ib zaug xwb, tom qab ntawd nws yuav tsis muaj hloov pauv). class PostData { public function __construct( public readonly string $title, public readonly DateTimeImmutable $date, ) {} } $post = new Post('Title', /* … */); $post->title = 'Lwm yam'; > yuam kev: Tsis tuaj yeem hloov kho cov cuab yeej readonly Post::$title
  • Lub syntax tshiab tau siv rau cov khoom hu tau - tam sim no kaw tau tsim los ntawm kev hu ua haujlwm thiab dhau nws tus nqi "..." raws li kev sib cav (xws li myFunc(...) es tsis txhob Kaw::fromCallable('myFunc) ')): function foo (int $a, int $b) { /* … */ } $foo = foo(…); $foo(a: 1, b: 2);
  • Ntxiv kev txhawb nqa tag nrho rau cov hom kev sib tshuam, tso cai rau koj los tsim hom tshiab los ntawm kev sib txuas cov uas twb muaj lawm. Tsis zoo li hom kev sib koom ua ke, uas txhais tau tias kev sau ntawm ob lossis ntau hom, kev sib tshuam yuav tsum tsis muaj ib yam ntawm cov npe teev tseg, tab sis tag nrho cov hom teev nyob rau hauv lub teeb yuav tsum tau sau. muaj nuj nqi generateSlug(HasTitle&HasId $post) {rov qab strtolower($post->getTitle()). $post->getId(); }
  • Muaj ib hom tshiab "yeej tsis" uas tuaj yeem siv los qhia cov kws tshuaj ntsuam xyuas zoo li qub uas muaj nuj nqi yuav txiav tawm qhov kev ua tiav, piv txwv li los ntawm kev cuam tshuam lossis ua tiav cov haujlwm tawm. muaj nuj nqi dd(mixed $input): yeej tsis { tawm; }
  • Ib txoj haujlwm tshiab array_is_list tau raug thov, uas tso cai rau koj los txiav txim siab tias cov yuam sij hauv cov array tau teeb tsa los ntawm kev nce tus lej, pib ntawm 0: $list = ["a", "b", "c"]; array_is_list($list); // true $notAList = [1 => β€œa”, 2 => β€œb”, 3 => β€œc”]; array_is_list($notAList); // cuav $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list($alsoNotAList); // cuav
  • Tam sim no koj tuaj yeem siv lo lus "qhov kawg" los tiv thaiv cov niam txiv hauv chav kawm tsis tu ncua los ntawm kev hla dhau. class Foo { final public const X = "foo"; } class Bar extends Foo { public const X = "bar"; > Tuag yuam kev: Bar::X tsis tuaj yeem override kawg tas li Foo::X }
  • Cov haujlwm fsync thiab fdatasync tau thov kom yuam kev hloov pauv kom tau txais kev cawmdim los ntawm disk cache. $file = fopen("sample.txt", "w"); fwrite($file, "Qee cov ntsiab lus"); yog (fsync($file)) { ncha "Cov ntaub ntawv tau ua tiav rau disk."; } fclose($file);
  • Ntxiv lub peev xwm los siv cov lus ua ntej "0o" thiab "0O" rau cov lej octal, ntxiv rau yav dhau los siv ua ntej "0". 016 == 0o16; // tseeb 016 === 0O16; // tseeb
  • Nws tau thov kom xaiv txwv tsis pub siv $ GLOBALS, uas yuav ua rau muaj kev ua txhaum ntawm kev rov qab sib raug zoo, tab sis yuav ua rau nws muaj peev xwm ua kom ceev cov haujlwm nrog arrays. Piv txwv li, qhov muaj peev xwm ntawm kev tsis siv neeg sau ntawv rau $ GLOBALS thiab dhau $ GLOBALS los ntawm tus taw tes yog raug txiav txim siab. Kev tshuaj xyuas ntawm 2000 pob ntawv qhia tias tsuas yog 23 ntawm lawv yuav raug cuam tshuam los ntawm qhov kev hloov pauv no. Piv txwv li, yog tias qhov kev pom zoo pom zoo, 8.1 yuav tsis txhawb cov lus xws li: $GLOBALS = []; $GLOBALS += []; $GLOBALS =&$x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS);
  • Cov txheej txheem sab hauv yuav tsum tam sim no rov qab hom raug. Nyob rau hauv PHP 8.1, rov qab ib hom uas tsis phim cov lus tshaj tawm ua haujlwm yuav ua rau ceeb toom, tab sis hauv PHP 9.0 cov lus ceeb toom yuav raug hloov nrog qhov yuam kev.
  • Ua haujlwm txuas ntxiv ntawm kev hloov pauv haujlwm los ntawm kev siv cov peev txheej mus rau kev tswj cov khoom. Cov haujlwm finfo_* thiab imap_* tau raug xa mus rau cov khoom.
  • Dhau qhov tsis muaj nuj nqis raws li kev sib cav rau cov haujlwm sab hauv uas cim tsis yog-nullable tau raug deprecated. Hauv PHP 8.1, siv kev tsim xws li str_contains("txoj hlua", null) yuav ua rau muaj kev ceeb toom, thiab hauv PHP 9 rau qhov yuam kev.
  • Ntxiv kev txhawb nqa rau MurmurHash3 thiab xxHash hashing algorithms.

Tau qhov twg los: opennet.ru

Ntxiv ib saib