Blog ENI : Toute la veille numérique !
-25€ dès 75€ sur les livres en ligne, vidéos... avec le code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Les nouveautés en PHP 8

Un zeste d’asynchrone : les fibres en PHP 8

Une nouvelle fonctionnalité a été introduite dans PHP à partir de la version PHP 8.1. Elle s’intitule les fibres (fibers en anglais).

De quoi s’agit-il ?

Jusqu’à présent, notre code PHP s’exécute de manière séquentielle. C’est-à-dire que le processeur de notre PC traite les instructions les unes après les autres, en suivant bien sûr l’ordre imposé par les structures de contrôle et les appels aux fonctions.

Mais, il peut être intéressant d’avoir plusieurs codes PHP qui s‘exécutent de manière simultanée. C’est possible, mais à quoi cela sert-il ?

Imaginez que votre programme PHP appelle un autre programme qui se trouve sur un autre serveur. Au lieu de réécrire des programmes qui offrent le même service que d’autres, disponibles sur des serveurs extérieurs, pourquoi ne pas faire appel directement à ces programmes ? Ceci arrive fréquemment. Nous appelons ces programmes des services. Nous parlons alors de programmation par services ou mieux encore d’architecture service.

Rassurez-vous, rien de compliqué.

Prenons un exemple : votre programme a besoin de connaître les températures météorologiques de chaque ville de France à une date précise pour les traiter par la suite, peut-être pour fournir un historique. Au lieu de créer le code qui va chercher ces températures une à une, votre programme va faire appel à un service météo externe c’est-à-dire un programme externe dont la fonction est justement de retourner la liste des températures demandée.

Vous pouvez trouver ce genre de service, si vous tapez sur Google, les termes :

Api météo ville France

Ces services sont aussi appelés API comme Application Programming Interface, c’est-à-dire des interfaces de programmation qui permettent de connecter un logiciel à un autre.

Bien sûr, vous ne pourrez pas récupérer les données résultats de ces APIs directement en tapant l’adresse sur votre navigateur. Il faudra passer par un programme PHP qui, à l’aide d’une instruction, appellera directement le service. Plusieurs instructions PHP permettent d‘appeler un programme externe. Par exemple, l’instruction file_get_contents permet de le faire.

Je vous suggère pour en savoir plus, d’aller jeter un œil sur le lien : https://www.php.net/manual/en/function.file-get-contents.php

Vous trouverez, tout en bas de la page, des exemples d’utilisation.

Une autre instruction intéressante pour appeler un programme extérieur est l’instruction curl.

Curl est en fait une librairie indépendante de PHP, qui peut être utilisée pour communiquer avec de nombreux types de serveurs. Nous verrons dans un exemple plus loin, comment l’utiliser avec PHP.

Pour revenir à la programmation asynchrone, imaginez que le retour du service extérieur auquel nous faisons appel ne soit pas instantané.

En effet, il faut compter le temps d’accès au serveur. Il se peut également...

Les autres nouveautés intéressantes en PHP 8

Mis à part les fibres, voici les principales améliorations que l’on peut retenir de PHP 8.1.

1. Les arguments nommés

Dans les anciennes versions de PHP, comme indiqué dans le chapitre Le langage PHP, section Paramètres d’une fonction, la transmission des valeurs des paramètres (appelés aussi arguments), se fait suivant l’ordre de définition dans la déclaration de la fonction. Ceci présente un inconvénient majeur qui est de donner obligatoirement une valeur à chaque argument même si ceux-ci sont optionnels. En PHP 8, vous pouvez passer ces valeurs en vous appuyant sur le nom des arguments. 

Prenons un exemple :

function maFonction($a, $b, $c = 3, $d = 4) {  
 return $a + $b + $c + $d;  
}  
echo maFonction(a : 10, b : 15,d : 40) ;  // renvoie 68  

Ici, nous avons omis de transmettre la valeur de l’argument $c qui, par défaut, est à 3.

2. Liste d’arguments à nombre variable

PHP supporte également les arguments à nombre variable dans les fonctions définies par l’utilisateur en utilisant le token ....

Les arguments sont alors passés sous forme d’un tableau indexé ou associatif :

function maFonction($a, $b, $c = 3, $d = 4) {  
  return $a + $b + $c + $d;  
}  
 
echo maFonction(...[10,20, 'd' => 40]); // renvoie 73 

Les valeurs de $a et $b sont transmises par indexation du tableau ($a=10 et $b=20), la valeur $c est « 3 » par défaut et la valeur $d est transmise par la clé associative ‘d’.

Il est possible d’utiliser aussi ce token dans la déclaration de la fonction :

function maFonction2(...$nombres) {  
  $somme=0;  
  foreach($nombres as $nombre){  
  
  $somme+=$nombre;  
  
  }  
  return $somme;  
}  
echo maFonction2(1, 2, 3, 4); // renvoie...