À partir de novembre 2023, PHP 8.3 sera la dernière version du langage de programmation pour le développement web. Avec diverses améliorations pour les programmeurs (telles que les types d’union, les propriétés en lecture seule et les messages d’erreur améliorés), il est nécessaire de procéder à une mise à jour pour en tirer parti.


Voici un aperçu des nouvelles fonctionnalités de PHP, avec quelques étapes pour les mettre en œuvre, à l’aide d’exemples pratiques.


1. Types Union et Types Intersection

En PHP 8.3, une amélioration notable concerne l’implémentation des types intersection et union. Ces types permettent aux codeurs de spécifier les paramètres et les types de retour comme un mélange de différents types, augmentant ainsi la polyvalence et la durabilité du code.

En utilisant le symbole du tuyau (|), les types d’union permettent de spécifier un paramètre ou une valeur de retour avec plusieurs types. Par exemple, supposons que vous ayez une fonction qui accepte une chaîne de caractères ou un nombre entier en entrée ; vous pourriez définir son paramètre de la manière suivante :

 function foo(int|string $param) { // ... } 

En revanche, avec les types d’intersection, vous pouvez définir une valeur de retour ou un paramètre comme une combinaison de deux types ou plus. Par conséquent, la valeur de retour ou le paramètre doit correspondre à tous les types de l’intersection. Examinons un exemple :

 function bar(ArrayAccess&Countable $param): int { // ... } 

Dans cet exemple, l’argument doit être un objet implémentant à la fois le type ArrayAccess et Comptable et la fonction doit renvoyer un nombre entier.

Un type d’union est défini par le symbole du tuyau (|) et permet de spécifier plusieurs types qu’un paramètre ou une valeur de retour peut avoir.

Les types d’intersection, quant à eux, vous permettent de définir un paramètre ou une valeur de retour comme une intersection de deux types ou plus. Cela signifie que les paramètres ou les valeurs de retour doivent satisfaire à tous les types d’intersection.

2. Propriétés en lecture seule

L’ajout d’attributs en lecture seule en PHP 8.3 est un autre aspect utile. Vous pouvez déclarer des propriétés en lecture seule en utilisant cette propriété, ce qui empêche toute modification ultérieure de leur valeur et ne permet qu’une seule initialisation.

Vous pouvez utiliser cette fonctionnalité pour augmenter la sécurité et la fiabilité de votre code en empêchant l’altération involontaire de données cruciales.

Cet exemple de PHP 8.3 montre comment définir une propriété en lecture seule.

 Class MyClass
{
Public read_only string $name;
Public function__construct(string $title)
{$this->title = $title;
  }
}

Dans l’exemple ci-dessus, la fonction Object() { [native code] } initialise la propriété $name une seule fois. Elle ne peut être spécifiée qu’en lecture seule.

3. Messages d’erreur améliorés

Lorsqu’une erreur fatale survient dans un script PHP, l’attribut Enhanced Error Messages de PHP 8.3 fournit des messages d’erreur plus détaillés et plus utiles. Les développeurs peuvent rapidement identifier et résoudre les problèmes de code grâce à cette fonctionnalité.

Lors de l’accès à un index de tableau indéfini, les messages d’erreur améliorés sont en action. Dans les versions précédentes de PHP, vous obteniez un message d’erreur comme celui-ci :

 Notice: Undefined offset: 4 in /path/to/file.php on line 3 

Ce message d’erreur ne dit pas grand chose sur l’origine du problème. Cependant, avec les messages d’erreur améliorés de PHP 8.3, vous recevrez le message d’erreur suivant, plus détaillé :

 Fatal error: Uncaught Error: Cannot use string offset as an array in /path/to/file.php:3 Stack trace: #0 {main} thrown in /path/to/file.php on line 3 Notice: Trying to access array offset on the value of type null in /path/to/file.php on line 3 

Ce message d’erreur fournit une trace de pile pour vous aider à déterminer l’origine du problème et vous informe que vous essayez d’utiliser un offset de chaîne comme un tableau (une des nombreuses fonctions de manipulation de texte utiles en PHP). De plus, il vous informe que vous essayez d’accéder à une valeur nulle à partir d’un tableau.

Se préparer à PHP 8.3

Le passage à PHP 8.3 est essentiel pour les concepteurs à la lumière de ses dernières nouveautés et améliorations. L’introduction des types union et intersection dans PHP 8.3 permet aux programmeurs de gérer plus facilement les types de données complexes.

En empêchant les modifications involontaires de données importantes, les propriétés en lecture seule augmentent également la fiabilité du code. En général, la mise à jour vers PHP 8.3 permet aux développeurs d’accéder à des outils plus puissants et plus adaptables pour créer des applications web performantes avec des frameworks comme Laravel.