De alfaversie van PHP 8.1 is gestart.

De eerste alfa-release van de nieuwe tak van de programmeertaal PHP 8.1 is gepresenteerd. De release staat gepland voor 25 november. De belangrijkste vernieuwingen, die al beschikbaar zijn voor test of gepland staan voor implementatie in PHP 8.1:

  • Ondersteuning voor enumeraties is toegevoegd, bijvoorbeeld nu kunnen we de volgende constructies gebruiken: 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);
  • Ondersteuning voor lichte threads, genaamd fibers (Fiber), is toegevoegd, waarmee het beheer van parallelisatie op laag niveau mogelijk is. Ondersteuning voor fibers wordt gepland om te worden toegevoegd aan de frameworks Amphp en ReactPHP. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend(‘after suspending’); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume(‘after resuming’);
  • De implementatie van object code caching (opcache) is verbeterd, met de mogelijkheid om informatie over klinheritance te cachen. Optimalisatie heeft ervoor gezorgd dat de prestaties van sommige applicaties met 5-8% zijn verhoogd.
  • De unpacking-operator binnen arrays «…$var», die het mogelijk maakt om bestaande arrays in te voegen bij het definiëren van een nieuwe array, is uitgebreid met ondersteuning voor string-sleutels (voorheen werden alleen numerieke identificaties ondersteund). Nu kan bijvoorbeeld de volgende code worden gebruikt: $array1 = [«a» => 1]; $array2 = [«b» => 2]; $array = [«a» => 0, …$array1, …$array2]; var_dump($array); // [«a» => 1, «b» => 2]
  • Er is een nieuw type «never» geïntroduceerd dat gebruikt kan worden om statische analyzers te informeren dat een functie het programma beëindigt, bijvoorbeeld door een uitzondering te gooien of de functie exit uit te voeren. function dd(mixed $input): never { exit; }
  • Een nieuwe functie array_is_list is voorgesteld, waarmee kan worden bepaald dat de sleutels in een array in oplopende volgorde van numerieke waarden liggen, beginnend bij 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
  • Een mogelijkheid is voorgesteld om constanten in een klasse te overschrijven tijdens het erven. Om het overschrijven van constanten van de ouderklasse te verbieden, kan het sleutelwoord "final" worden gebruikt. class Foo { public const X = "foo"; final public const Z = "foo"; } class Bar extends Foo { public const X = "bar"; }
  • De functies fsync en fdatasync zijn voorgesteld om wijzigingen uit de schijfcache gedwongen op te slaan. $file = fopen("sample.txt", "w"); fwrite($file, "Some content"); if (fsync($file)) { echo "Bestand is succesvol naar de schijf opgeslagen."; } fclose($file);
  • De mogelijkheid is toegevoegd om de prefixen "0o" en "0O" voor octale getallen te gebruiken, naast de eerder gebruikte prefix "0". 016 === 0o16; // true 016 === 0O16; // true
  • Er is voorgesteld om het gebruik van $GLOBALS selectief te beperken, wat zal leiden tot incompatibiliteit, maar de mogelijkheid biedt om arraybewerking aanzienlijk te versnellen. Bijvoorbeeld, er wordt overwogen om schrijven naar $GLOBALS en het doorgeven van $GLOBALS via een pointer te verbieden. Een analyse van 2000 pakketten toonde aan dat slechts 23 ervan door deze wijziging worden getroffen. Bijvoorbeeld, als het voorstel wordt goedgekeurd, zal in 8.1 de ondersteuning voor dergelijke uitdrukkingen als volgt worden beëindigd: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS);
  • Er wordt doorgegaan met het vertalen van functies van het gebruik van resources naar het manipuleren van objecten. De functies finfo_* en imap_* zijn omgezet naar objecten.
  • De overdracht van null-waarden als argumenten voor interne functies die als non-nullable zijn gemarkeerd, is als verouderd verklaard. In PHP 8.1 zal het gebruik van constructies zoals str_contains("string", null) een waarschuwing opleveren, en in PHP 9 een fout.
  • Ondersteuning voor de hashing-algoritmen MurmurHash3 en xxHash is toegevoegd.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster