AccueilActualités informatiqueLangage de programmation : PHP 8.1 introduit des énumérations

Langage de programmation : PHP 8.1 introduit des énumérations

La version 8.1 du langage de programmation PHP est disponible. Cette mise à jour apporte de nombreuses nouveautés, comme des énumérations, des fibres et des améliorations de performance.

Sommaire

La version introduit les énumérations (en abrégé : Enum). Il s’agit d’un type d’énumération analogue à d’autres langages comme Java ou C++, qui autorise des valeurs prédéfinies. En PHP, les enums présentent des similitudes avec les classes et partagent les mêmes espaces de noms que les classes, les interfaces et les traits. Cela les rend automatiquement chargeables de la même manière (autoloadable). Pour illustrer cela, voici un exemple tiré de la Request for Comments (RFC) sur wiki.php.net :

enum Suit {
	case Hearts;
	case Diamonds;
	case Clubs;
	case Spades;
}

L’exemple crée un nouveau type d’énumération appelé Suitqui contient les quatre valeurs suivantes : Suit::Hearts, Suit::Diamonds, Suit::Clubs et Suit::Spades. Des variables peuvent être affectées à ces valeurs. Les développeurs peuvent créer des types d’énumération avec le mot-clé Enum suivi du nom du type. Une énumération peut être à la fois string que int comme base. En outre, ils peuvent également étendre une classe et/ou implémenter des interfaces.

L’avantage des enums est qu’ils représentent une collection de valeurs constantes, mais surtout que ces valeurs peuvent être typées. Contrairement à l’utilisation interne de chaînes de caractères ou de nombres spéciaux (par ex. Magic Numbers) pour stocker et travailler avec des paramètres, les enums sont censés rendre le code de l’application plus lisible et éviter les états inattendus de l’application. Avec une majorité de 44 voix contre 7, les PHP Internals ont voté en faveur du RFC, de sorte que les enums font désormais partie de PHP 8.1.

Jusqu’à présent, PHP était uniquement destiné à l’écriture de code synchrone. Dans ce cas, l’exécution des fonctions est suspendue jusqu’à ce qu’un résultat soit disponible et renvoyé par une fonction. Depuis quelque temps, selon le RFC, des tentatives ont été faites pour écrire également du code asynchrone afin de permettre des opérations simultanées d’entrée-sortie. Les fonctions asynchrones permettent un rappel ou renvoient un caractère de remplacement pour une valeur future afin de ne poursuivre le code à cet endroit que lorsqu’un résultat est disponible. Ainsi, le code continue à être exécuté sans attendre un résultat – amphp, ReactPHP et Guzzle sont des exemples de ces projets.

L’introduction des fibres vise à supprimer la distinction entre les fonctions asynchrones et synchrones. Elles permettent apparemment de créer des fonctions full stack interruptibles qui peuvent être utilisées pour implémenter le multitâche coopératif en PHP – également connu sous le nom de coroutines ou de ce que l’on appelle les green threads. Les fibres immobilisent l’ensemble de la pile d’exécutions, de sorte que l’appelant de la fonction n’a pas besoin de modifier la manière dont la fonction est appelée.

L’exécution peut être arrêtée à n’importe quel endroit d’une pile avec Fiber::suspend() est interrompue. Le RFC a été adopté par 50 voix contre 14.

PHP 8.1 apporte, outre les enums et les fibres, des nouveautés pour améliorer les performances. Release Manager Le développeur PHP Core Dmitry Stogov a ajouté quelques améliorations à l’extension opcache, qu’il appelle « inheritance cache ». Cette fonction permet de mettre en cache les liens entre les classes, comme dans PHP 7.4, où les classes liées peuvent être préchargées. Il fait état sur GitHub d’une augmentation des performances de 5 à 8 pour cent.

La liste des nouveautés de PHP 8.1 est longue. Une liste de tous les changements est disponible dans l’article sur php.net. Peu avant la sortie, la PHP Foundation avait été créée pour assurer le développement du langage après le retrait de Nikita Popov.

Plus d'articles