Alpha-testningen af PHP 8.1 er startet

Den første alpha-udgivelse af den nye version af programmeringssproget PHP 8.1 er blevet præsenteret. Udgivelsen er planlagt til den 25. november. De vigtigste nyheder, som allerede er tilgængelige for test eller planlægges at blive implementeret i PHP 8.1:

  • Der er tilføjet støtte til ENUM'er, så man nu kan bruge følgende konstruktioner: 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);
  • Der er tilføjet støtte til letvægts-tråde kaldet fiber, som giver mulighed for lav-niveau parallelisering. Støtte til fiber planlægges at blive tilføjet i rammeværkene Amphp og ReactPHP. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('efter suspension'); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume('efter genoptagelse');
  • Implementeringen af objektkode-cachen (opcache) er blevet forbedret, hvilket nu muliggør caching af information om klassearv. Optimeringen har forbedret nogle applikationers ydeevne med 5-8%.
  • Operatøren til udpakning inden for arrays '…$var', som muliggør indsetting af eksisterende arrays ved oprettelse af et nyt array, er blevet udvidet med støtte til strengnøgler (tidligere blev der kun støttet numeriske ID'er). For eksempel kan man nu bruge i koden: $array1 = ['a' => 1]; $array2 = ['b' => 2]; $array = ['a' => 0, …$array1, …$array2]; var_dump($array); // ['a' => 1, 'b' => 2]
  • Der er kommet en ny type 'never', som kan bruges til at informere statiske analyseværktøjer om, at en funktion afslutter programudførelsen, for eksempel ved at kaste en undtagelse eller udføre funktionen exit. function dd(mixed $input): never { exit; }
  • En ny funktion array_is_list er blevet foreslået, som giver mulighed for at bestemme, at nøglerne i et array er ordnet i stigende numeriske værdier, startende fra 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); // false
  • Muligheden for at overskrive konstanter i klassen under arv er blevet foreslået. For at forhindre overskrivning af konstanter fra forældrekassen kan man bruge nøgleordet «final». class Foo { public const X = «foo»; final public const Z = «foo»; } class Bar extends Foo { public const X = «bar»; }
  • Funktionerne fsync og fdatasync er blevet foreslået til at tvinge ændringer fra diskcache til at blive gemt. $file = fopen(«sample.txt», «w»); fwrite($file, «Some content»); if (fsync($file)) { echo «Filen er blevet gemt til disk.»; } fclose($file);
  • Muligheden for at bruge præfikserne «0o» og «0O» for oktale tal er blevet tilføjet, ud over det tidligere anvendte præfiks «0». 016 === 0o16; // true 016 === 0O16; // true
  • Det er blevet foreslået at begrænse anvendelsen af $GLOBALS selektivt, hvilket vil bryde bagudkompatibiliteten, men betydeligt fremskynde operationer med arrays. For eksempel overvejes muligheden for at forbyde skrivning til $GLOBALS og at overføre $GLOBALS ved reference. En analyse af 2000 pakker viste, at kun 23 af dem vil blive berørt af denne ændring. For eksempel, hvis forslaget godkendes, vil understøttelsen af sådanne udtryk som: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS); stoppe i version 8.1.
  • Arbejdet med at oversætte funktioner fra brug af ressourcer til objektmanipulation er blevet fortsat. Funktionerne finfo_* og imap_* er blevet oversat til objekter.
  • Det er blevet erklæret forældet at overføre null-værdier som argumenter til interne funktioner, der er markeret som non-nullable. I PHP 8.1 vil brug af konstruktioner som str_contains(«string», null) føre til en advarsel, mens det i PHP 9 vil medføre en fejl.
  • Understøttelsen af hashing-algoritmerne MurmurHash3 og xxHash er blevet tilføjet.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster