Afin que chacun de nos clients puissent disposer de la meilleure expérience possible, nous mettons à jour régulièrement les formules d’hébergement Web. Par cela, nous sommes en mesure de vous fournir des outils toujours à jour. De ce fait, LWS propose désormais la version PHP 8.1 publiée en novembre 2021, sur les formules Web.
Grâce à cette nouvelle version PHP, aux nouvelles fonctionnalités, améliorations et performances proposées, vous serez en mesure de travailler plus efficacement et de manière plus créative sur vos différents projets.
En effet, plus de 20 fonctionnalités ont vu le jour sur PHP8.1 et certaines autres ont disparus. Dans cet article, nous allons passer en revue quelques modifications apportées à la version PHP 8.1.
Quelles sont les nouvelles fonctionnalités sur la version PHP 8.1 ?
Cette nouvelle version majeure de PHP introduit plus de vingt nouvelles fonctionnalités. Il est a noter que cette liste n’est pas complète. En effet, il est possible que des modifications aient été effectuées après la publication de cette nouvelle version.
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.
De plus, le programme principal ne peut pas suspendre ou terminer la fibre. En effet, seul le code se trouvant à l’intérieur de la fibre peut se suspendre et envoyer des données au programme principal. De ce fait, le programme principal peut alors continuer l’exécution de la fibre à partir du point de suspension.
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.
Type d’intersection pur
Grâce à la version PHP 8.1, il est désormais possible de prendre en charge les types d’intersection permettant de déclarer plusieurs types de classes pour une seule valeur. Bien que cela puisse paraître similaire à ce qui existe déjà dans la version PHP 8.0, il existe une différence significative.
Les types d’union permettent à la valeur de remplir n’importe quel type déclaré. De ce fait, si des chaînes et des entiers sont déclarés, la valeur peut être soit des chaines, soit des entiers déclarés.
Cependant, les types d’intersection purs n’autorisent que les valeurs remplissant tous les types déclarés. De ce fait, les types d’intersection purs ne peuvent utiliser que des types de classes ou d’interface. En effet, la plupart des types standard comme les chaines et les entiers ne peuvent être remplis simultanément.
Pour cela, sur PHP8.1, vous pouvez utiliser l’opérateur & (AND) comme dans l’exemple ci-dessous :
function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value);
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']);
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
Propriété lecture seule
class Author { public readonly int $authid; public function __construct(int $authid) { $this->authid = $authid; } } $author = new User(25);
Fonctions fsync() et fdatasync()
$file = 'sample.txt'; $test = fopen($file, 'h'); fwrite($test, 'sample data'); fwrite($test, "\r\n"); fwrite($test, 'another data'); fsync($test); fclose($test);
Nouveauté dans les initialiseurs
class Test { public function __construct( private Logger $logger = new NullLogger, ) {} }
Autres petits changements
- Les entiers et les flottants dans les ensembles de résultats PDO MySQL et Sqlite seront renvoyés à l’aide de type PHP natifs au lieu de chaînes lors de l’utilisation d’instructions préparées.
- Les UTF-8 mal-formé seront remplacé par des caractères unicodes au lieu d’aboutir à une chaîne vide.
- Les « hash », « hash_file » et « hash_init ont un argument supplémentaire qui leur est ajouté appelé $options
La version PHP 8.1 est-elle compatible avec WordPress, Woocommerce ou Prestashop ?
Comment activer PHP8.1 sur votre formule d’hébergement Web LWS?
- Rendez-vous sur votre espace client LWS et cliquez sur « Gérer » se trouvant derrière le domaine concerné par le changement de version PHP.
- Cliquez sur « Configuration PHP » se trouvant dans la rubrique « Base de données et PHP« .
- Choisissez la version PHP souhaitée et cliquez sur le bouton « Valider » afin de sauvegarder votre demande.
Un délai de 15 minutes peut être nécessaire pour que le changement de version PHP soit effectif.
Quelles sont les formules compatibles avec PHP 8.1 ?
LWS propose diverses formules adaptées à vos besoins ainsi qu’à vos projets. En effet, il vous est possible de choisir entre différentes gamme de formule, de la plus accessible à la plus formule premium. Cela dans le but de s’adapter à chaque client. LWS s’efforce de mettre à jour les serveurs à chaque changement de version PHP afin de s’adapter continuellement.
- Les formules LWS Perso à LWS Performance dispose de la version PHP 8.1. Il est cependant conseillé de disposer d’une formule Web de type LWS Starter ou supérieur si vous décidez d’installer une boutique en ligne.
- Les formules WP Start à WP Premium sont dédiées à de l’hébergement WordPress ou Woocommerce. Ces formules disposent de la version PHP 8.1. De plus, il vous sera possible d’installer un un clic WordPress sur cette formule.
- Les formules Ecommerce M à XL sont spécialement dédiées et optimisées pour le déploiement d’une boutique en ligne tel que Prestashop ou Woocommerce. Tout comme les deux autres types de formule, cette dernière est compatible avec PHP 8.1.
Conclusion
Avez-vous des questions sur la version PHP 8.1 disponible sur nos hébergements web mutualisés ? N’hésitez pas à nous en faire par dans la section commentaire se trouvant ci-dessous !
N’oubliez pas non plus qu’il est crucial de bien choisir son fournisseur d’hébergement Web. En effet, il est préférable de tenir compte de certains facteurs tels que la fiabilité et l’évolutivité des formules proposées par ce dernier. La disponibilité des différentes versions PHP en fait bien entendu parti.