Contact salesFree trial
Blog

Principales fonctionnalités et améliorations de PHP 8.1

PHP
31 décembre 2021
Partager
Cet article est également disponible en Anglais.

Quelques jours après sa sortie officielle, nous sommes ravis d'annoncer la disponibilité immédiate de PHP 8.1 pour tous les projets Grid Plan. La nouvelle fondation PHP publie une nouvelle version principale chaque année à la fin du mois de novembre, et c'est une sorte de Noël anticipé pour nous, développeurs et créateurs d'applications.

Etincelles et accélération

PHP 8.1 apporte de nombreuses nouveautés attendues depuis longtemps, telles que les Enums, les propriétés en lecture seule, la syntaxe des appelants de première classe, et les nouveaux initialisateurs.

Il apporte également de belles améliorations de performances, estimées entre 5 et 8 %. Dmitry Stogov, l'auteur de cette fonctionnalité impressionnante, la décrit comme une nouvelle technologie transparente qui élimine l'héritage des classes PHP.

Enfin, Fibers pourrait constituer rien de moins qu'un changement révolutionnaire dans l'écosystème PHP en ajoutant un mécanisme de bas niveau pour gérer le parallélisme.

Ces fonctionnalités et bien d'autres sont disponibles dès maintenant. Vous pouvez les essayer dès aujourd'hui.

Enums

C'est une fonctionnalité que j'attendais depuis des années, et j'ai hâte de l'utiliser car c'est un moyen très pratique de gérer des collections de valeurs constantes.

enum Status { case Draft ; case Published ; case Archived ; }

Copiez l'extrait

class Post { public function __construct( private Status $status = Status::Draft ; // ... ) {} public function getStatus() : Status { return $this->status ; } public function setStatus(Status $status) : void { $this->status = $status ; } } $post->setStatus(Status::Active) ;

Copier l'extrait

Les Enum peuvent même avoir des méthodes et des interfaces. C'est pas cool ça ?

enum Status { // ... public function color() : string { return match($this) { self::Draft => 'grey', self::Published => 'green', self::Archived => 'red', } ; } }

Copier l'extrait

interface HasColor { public function color() : string ; }

Copier l'extrait

enum Status implements HasColor { // ... public function color() : string { /* ... */ } }

Copier le snippet

Propriétés en lecture seule

Les propriétés des classes peuvent être marquées comme étant en lecture seule. Cela signifie qu'elles ne peuvent être écrites qu'une seule fois et qu'une exception sera levée dans le cas contraire.

class Post { public function __construct( public readonly string $title, ... ) {} }

Copiez l'extrait

$post = new Post(title : 'PHP 8.1 is available', /* ... */) ; // Tout va bien, la vie est belle. $post->title = 'Some other and less fancy title' ; // Error : Impossible de modifier la propriété en lecture seule Post::$title

Copier l'extrait

Syntaxe des appelants de première classe

PHP 8.1 introduit une nouvelle syntaxe pour la création d'une classe d'appel. Vous pouvez maintenant créer une fermeture à partir d'un appelable en appelant cet appelable et en lui passant ... comme argument :

function love(Human $a, Human $b) { /* Qu'est-ce que l'amour ... */ } $love = love(...) ; $love(a : $someone, b : $someoneElse) ;

Copiez l'extrait

nouveau

Cette fonctionnalité permet une utilisation plus large du mot-clé new qui peut désormais être utilisé dans les définitions de fonctions comme paramètre par défaut et comme argument d'attribut.

Avec la promotion des propriétés des constructeurs qui a été introduite avec PHP 8.0, cela peut considérablement réduire la taille des classes. Moins de bruit et plus de signal : plus d'espace pour les développeurs zen.

class FooController { public function __construct( private Logger $logger = new BarLogger(), ) {} }

Copier l'extrait

Fibres

Les fibres sont un nouveau mécanisme de bas niveau pour faciliter la concurrence. Ils permettent la création de fonctions interruptibles, de pleine pile, qui peuvent être utilisées pour implémenter le multitâche coopératif en PHP. Elles sont également décrites comme des threads verts, puisqu'elles exécutent du code simultanément sans dépendre d'un environnement multithread.

$catFiber = new Fiber(function () : void { // ... $value = Fiber::suspend('taking a nap') ; echo 'Cat fiber resuming its activity because of : ' . $value ; }) ; $value = $catFiber->start() ; echo 'Valeur actuelle de cette fibre de chat : ' . $value ; // Valeur actuelle de la fibre de chat suspendue : faire une sieste $catFiber->resume('un bruit aléatoire') ; // La fibre de chat reprend son activité à cause de : un bruit aléatoire

Copier l'extrait

S'il ne s'agit pas de fonctionnalités véritablement asynchrones ou multithreads, les Fibers peuvent tout de même poser de nouveaux jalons pour l'écosystème PHP en introduisant un changement dans les paradigmes historiques de PHP. En savoir plus sur Fibers avec le RFC.

Essayez-le dès aujourd'hui

PHP 8.1 introduit quelques changements qui peuvent affecter les anciens codes. Vous pouvez tester votre application avant de mettre à jour la version de PHP. Bonne nouvelle : tester PHP 8.1 ne pourrait pas être plus facile. Tout d'abord, créez une nouvelle branche dans votre dépôt. Ensuite, mettez à jour votre fichier ./.upsun/config.yaml dans cette branche et changez la clé de type en :

type : php:8.1

Copiez l'extrait

Git commit and deploy : cette branche fonctionne maintenant avec PHP 8.1. Essayez votre application, exécutez vos tests d'intégration, et vérifiez si quelque chose doit être mis à jour. Une fois que vous avez fait les changements nécessaires, fusionnez cette branche avec la branche principale. Félicitations, vous utilisez maintenant PHP 8.1 en production.

Bon déploiement, PHP !

Votre meilleur travail
est à l'horizon

Essai gratuit
Discord
© 2025 Platform.sh. All rights reserved.