Nouvelles fonctions PHP
Comme pour chaque version, PHP 8.1 a ajouté de nouvelles fonctions utiles ainsi que des améliorations en termes de qualité-de-vie.
Enumérations
PHP8.1 prends désormais en charge les énumérations ou enum. Il s’agit d’un type de données énuméré qui consiste en un ensemble fixe de valeurs possibles. Pour cela, la syntaxe utilise enum pour déclarer les énumérations suivi du nom défini par l’utilisateur. Ce terme est suivi de « case » afin de permettre la déclaration des valeurs possibles.
L’énumération RFC utilise des cartes à jouer standard afin d’expliquer son fonctionnement. Il y a dans ce cas, quatre couleurs fixe qui sont les suivantes: Spades, Hearts, Diamonds, Clubs.
De ce fait, il vous sera possible d’énumérer ces combinaisons en utilisant enum, de la manière suivante :
enum Suit {
case Spades;
case Hearts;
case Diamonds;
case Clubs;
}
Maintenant, l’énumération « Suit » dispose de quatre valeurs possibles de combinaisons de cartes. De ce fait, il vous est possible d’utiliser une fonction et d’appliquer des types lors de l’acceptation ou du retour d’une valeur de combinaison avec la syntaxe suivante, par exemple :
function pick_card ( Suit $Suit ) {}
pick_card(Suit::Spades);
De plus, les énumérations peuvent également contenir une chaîne ou une valeur int facultatives en utilisant l’un des critères suivants :
- Déclarer le type scalaire, qu’il s’agisse d’une chaîne de caractères ou d’un entier. Cela s’intègre dans la déclaration Enum,
- Tous les cas ont des valeurs,
- Tous les cas contiennent le même type scalaire, qu’il s’agisse de chaînes de caractères ou d’un entier.
Vous pouvez pour cela, utiliser la combinaison suivante :
enum Suit: string {
case Spades = '10';
case Hearts = '0';
case Diamonds ='5';
case Clubs = '3';
Fibres
Cette nouvelle fonctionnalité permet d’introduire l’exécution simultanée dans la programmation PHP. Il est toutefois à noter que cela ne signifie pas que les actions seront exécutées en même temps en PHP.
Pour cela, voici un exemple simple d’utilisation des fibres dans un programme :
$fiber = new Fiber(function(): void {
echo "Bonjour de la fibre\n";
Fiber::suspend();
echo "Bienvenu dans la fibre\n";
});
echo "Démarrage du programme\n";
$fiber->start();
echo "Reprise du controle\n";
echo "Reprise de la fible\n";
$fiber->resume();
echo "Le programme se termine\n";
Dans le code ci-dessus, la commande « fiber::suspend() » suspendra l’exécution de la fibre. Ensuite, lorsque le code principal appelle le code « $fiber->resume« , la fibre s’exécutera depuis son point de suspension.
Mode Read-Only
Il s’agit d’une nouvelle propriété proposé par la version PHP 8.1. Cette dernière ne peut être initialisée qu’une seule fois à partir de la classe ou elle a été déclarée. De ce fait, toutes les classes disposant de cette propriété ne sera pas modifiable.
Voici un exemple de la façon dont vous pouvez utiliser cette propriété :
class Author {
public readonly int $authid;
public function __construct(int $authid) {
$this->authid = $authid;
}
}
$author = new User(25);
Nouvelles fonctions fsync et fdatasync
fsync() et fdatasync() sont de nouvelles fonctions disponibles sur PHP 8.1. Ils ont des similitudes avec la fonction « fflush()« . Ces fonctions sont utilisées afin de forcer la synchronisation des modifications de fichiers sur le disque et s’assurer que les tampons d’écriture du système d’exploitation ont été vidés.
Voici un exemple de code utilisant cette fonction :
$file = 'sample.txt';
$test = fopen($file, 'h');
fwrite($test, 'sample data');
fwrite($test, "\r\n");
fwrite($test, 'another data');
fsync($test);
fclose($test);
Nouvelle fonction array_is_list
Désormais, une nouvelle fonction « array_is_list » est disponible. Cette fonction permet de vous aider à voir si un tableau contient des entrées qui sont une liste. Il vérifiera les clés du tableau. Si ces dernières sont dans l’ordre séquentiel, commencent par zéro et n’ont pas d’espace, il retournera la valeur « True« . Pour les tableaux vides, la valeur « True » sera également renvoyé par défaut.
Pour l’exemple suivant la fonction « array_is_list » renverra la valeur « True« :
array_is_list([]);
array_is_list([1, 2, 3]);
array_is_list([‘rock’, 2, 3]);
array_is_list([‘rock’, scissor]);
array_is_list([0 => 'rock', 'scissor']);
array_is_list([0 => 'rock', 1 => 'scissor']);
A l’inverse, la fonction « array_is_list » renverra la valeur « False » pour l’exemple suivant :
array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0
array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order
array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys
array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential
Autres petits changements
- Types d’intersection pure
- Syntaxe des appelants de premier ordre
- Un modificateur “final” pour les composantes de classe
- Notation explicite des chiffres octaux
La version PHP 8.1 est-elle compatible avec WordPress, Woocommerce ou Prestashop ?
Si votre site a été créé il y a quelques temps déjà et ne dispose pas de la dernière version du CMS, il sera nécessaire de vérifier que les plugins utilisées sur vos sites soient bien compatibles avec la dernière version du CMS concerné avant de le mettre à jour. Il en va de même pour les thèmes utilisées. Une fois la mise à jour du CMS, il vous sera aisé de changer de version PHP pour la dernière par le biais de votre espace client.
Connectez-vous à votre Contrôle Panel Zenhosting
Accédez à Extra Features>> Select PHP version

Sélectionnez le domaine pour lequel vous souhaitez modifier la version PHP.
Cliquez sur le lien supérieur du sélecteur de version PHP et sélectionnez la version PHP souhaitée dans la liste.

Cliquez sur le bouton ENREGISTRER. Vous verrez le message de confirmation « versions PHP enregistrées ». Le changement sera effectif après environ 1 minute.