Le test alpha de PHP 8.1 a commencé

La première version alpha du nouveau branchement du langage de programmation PHP 8.1 a été présentée. La sortie est prévue pour le 25 novembre. Les principales nouveautés, déjà disponibles pour les tests ou prévues dans PHP 8.1 :

  • Ajout du support des énumérations, par exemple, il est désormais possible d'utiliser les constructions suivantes : 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);
  • Ajout du support des fibres légères, permettant de gérer le parallélisme à un niveau inférieur. Le support des fibres sera ajouté aux frameworks Amphp et ReactPHP. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('after suspending'); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume('after resuming');
  • Amélioration de l'implémentation du cache de code objet (opcache), avec la possibilité de mettre en cache des informations sur l'héritage des classes. L'optimisation a permis d'augmenter les performances de certaines applications de 5 à 8%.
  • L'opérateur de décomposition à l'intérieur des tableaux «…$var», permettant de substituer des tableaux existants lors de la définition d'un nouveau tableau, a été étendu pour prendre en charge les clés de chaîne (auparavant, seuls les identifiants numériques étaient pris en charge). Par exemple, il est maintenant possible d'utiliser dans le code : $array1 = ['a' => 1]; $array2 = ['b' => 2]; $array = ['a' => 0, …$array1, …$array2]; var_dump($array); // ['a' => 1, 'b' => 2]
  • Un nouveau type «never» a été ajouté, qui peut être utilisé pour informer les analyseurs statiques qu'une fonction interrompt l'exécution du programme, par exemple, en lançant une exception ou en exécutant la fonction exit. function dd(mixed $input): never { exit; }
  • Une nouvelle fonction array_is_list a été proposée, permettant de déterminer que les clés dans un tableau sont organisées en ordre croissant de valeurs numériques, à partir de 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
  • Il est proposé de redéfinir les constantes dans une classe lors de l'héritage. Pour interdire la redéfinition des constantes de la classe parent, vous pouvez utiliser le mot-clé « final ». class Foo { public const X = «foo»; final public const Z = «foo»; } class Bar extends Foo { public const X = «bar»; }
  • Les fonctions fsync et fdatasync ont été proposées pour forcer la sauvegarde des modifications du cache disque. $file = fopen(«sample.txt», «w»); fwrite($file, «Some content»); if (fsync($file)) { echo «Le fichier a été sauvegardé avec succès sur le disque.»; } fclose($file);
  • Ajout de la possibilité d'utiliser les préfixes «0o» et «0O» pour les nombres octaux, en plus du préfixe «0» utilisé précédemment. 016 === 0o16; // true 016 === 0O16; // true
  • Il est proposé de limiter sélectivement l'utilisation de $GLOBALS, ce qui entraînera une rupture de la rétrocompatibilité, mais permettra d'accélérer considérablement les opérations sur les tableaux. Par exemple, on envisage d'interdire l'écriture dans $GLOBALS et de passer $GLOBALS par référence. Une analyse de 2000 paquets a montré que seulement 23 d'entre eux seraient touchés par ce changement. Par exemple, si la proposition est approuvée, dans 8.1, le support de telles expressions sera arrêté : $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS);
  • Les efforts se poursuivent pour convertir les fonctions de l'utilisation des ressources vers la manipulation d'objets. Les fonctions finfo_* et imap_* ont été converties en objets.
  • Il a été déclaré obsolète de passer des valeurs null comme arguments aux fonctions internes marquées comme non-nullables. En PHP 8.1, l'utilisation de constructions telles que str_contains(«string», null) entraînera un avertissement, et en PHP 9, une erreur.
  • Ajout de la prise en charge des algorithmes de hachage MurmurHash3 et xxHash.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster