Les Nouveautés de PHP 7.3

Apparue début décembre 2018, la version 7.3 de PHP apporte de nombreuses nouveautés ainsi qu’un gain significatif en termes de performances au point de marquer la fin des mises à jours de sécurité de la version 5.X qui demeure à l’heure actuelle la version la plus utilisée de ce langage très répandu.

Comment cette nouvelle version peut-elle convaincre les développeurs de franchir définitivement le pas vers la version 7.x qui est tout-de-même trois fois moins utilisée ?

Des syntaxes Heredoc et Nowdoc plus flexibles

La principale nouveauté de PHP 7.3 réside dans le fait que les syntaxes Heredoc et Nowdoc sont plus flexibles qu’auparavant. En effet, avec la précédente version 7.2 de PHP, l’identifiant de fin devait impérativement être écrit à la ligne et être collé à gauche sans indentation sous peine de générer une erreur de syntaxe, ce qui est désormais rendu possible avec la dernière version.

En PHP 7.2, impossible d'indenter l'identifiant de fin dans un Heredoc

En PHP 7.3, il est possible d'indenter l'identifiant de fin

Virgule de fin dans l’appel de fonction enfin autorisée

PHP 7.3 autorise les virgules de fin dans l’appel de fonction. Concrètement cela signifie qu’il est maintenant possible de laisser trainer une virgule à la fin de la liste des éléments dans un tableau. On se rappelle que PHP 7.2 avait étendu cette possibilité aux espaces de noms de groupe.

La version 7.3 y ajoute la possibilité de recourir aux virgules dans les déclarations de fonctions.

Déclaration de la fonction var_dump( ) en PHP 7.3


Configurer l’extension JSON pour lancer une exception en cas d’erreur

Auparavant avec la version PHP 7.2, la fonction json_decode( ) retournait NULL en cas d’erreur ce qui pouvait porter à confusion car NULL peut être considérée comme une valeur valide, pour y remédier le développeur devait récupérer l’erreur avec les fonctions json_last_error ( ) et json_last_error_msg( ).


Aujourd’hui avec la version 7.3, il est possible, avec la flag JSON_THROW_ON_ERROR, de modifier la gestion d’erreur des fonctions JSON en envoyant une exception de type JsonException pouvant être gérée dans un try { } catch { }


Affectation par référence avec la fonction list ( )

Le fait d’éclater des valeurs d’un tableau avec la fonction list ( ) pour les récupérer par référence n’était pas possible avec PHP 7.2. Cela est maintenant rendu possible avec la version 7.3.

Aperçu de la fonction list ( )

Pour rappel, en PHP, une variable doit être préfixée par &.


Apparition de la fonction is_countable( ) en complément de la fonction count ( )

Avant PHP 7.3, lorsque l’on passait un paramètre non énumérable dans une fonction count ( ) une erreur était renvoyée, maintenant il est possible de vérifier qu’une valeur est énumérable par l’emploi de la nouvelle fonction is_countable ( ) 

La variable instance n'est pas énumérable


La récupération de clés dans un tableau simplifiée avec PHP 7.3

Avant le passage à la version 7.3 de PHP, le développeur devait enchaîner plusieurs fonctions de manipulation de tableau tel que key ( ), reset ( ) ou encore hack pour récupérer la première ou dernière clé d’un tableau. Pour parvenir au même résultat, le PHP 7.3 se révèle plus efficient puisque désormais il ne faut saisir qu’une seule fonction : array_key_first ( ) ou array_key_last ( ).

Ici on souhaite récupérer la première clé du tableau languages


Un choix plus vaste d’algorithmes de hachage de mot de passe …

Comme nous l’avons pu étudier en cours de PHP, la fonction password_hash( ) permet de sécuriser un mot de passe en le transformant de telle façon qu’on puisse le vérifier avec la fonction password_verify ( ) sans en retrouver sa valeur d’origine.

Pour hacher un mot de passe, plusieurs choix d’algorithme s’offrent au développeur. En effet, chaque algorithme comporte des spécificités telles que la rapidité d’exécution et le niveau de sécurité. Par défaut, la constante PASSWORD_DEFAULT permet de choisir automatiquement l’algorithme recommandé.

En PHP 7.3, une nouvelle variante fait son apparition, en l’occurrence, l’algorithme « Argon2 » qui se veut un mix entre « Argon2i » et « Argon2id » par le biais de la nouvelle constante PASSWORD_ARGON2ID.
Bien entendu, il est possible de migrer de «Bcrypt » à « Argon2 » sans problème puisque la fonction password_verify( ) saura faire le distinguo entre les mots de passes stockés par la fonction Becrypt ( ) apparue avec PHP 7.2 de ceux qui le seront dorénavant en « Argon2 ».


Lexique

Heredoc: Syntaxe qui permet de déclarer des chaînes de caractère en PHP et dont l’identifiant est précédé de l’opérateur <<< . La syntaxe Heredoc se veut être un moyen d’ajouter une grande quantité de texte sans avoir besoin d’échapper des caractères comme les guillemets.

Nowdoc: Très proche de la syntaxe Heredoc, le Nowdoc s’en distingue par un identifiant qui est placé entre guillemets simples (<<<’EOT’) et qu’elle ne comporte aucune analyse.

Référence: Manière d’accéder au contenu d’une variable en utilisant différents noms.

Efficience : Consiste à obtenir un tel résultat tout en mobilisant le minimum de ressources et moyens possibles quand l’efficacité ne tiens pas de cet aspect.

Hash : Consiste à récupérer une donnée qui est fournie (en entrée) de manière à calculer (à la sortie) une empreinte qui ne permet pas de retrouver cette première sachant qu’il est impossible de trouver deux données distinctes à partir d’une même empreinte.

Sources

www.programmez.com – PHP 7.3 est disponible
www.developpez.com – PHP 7.3 est disponible en version stable …
www.codedesign.fr – Nouveautés de PHP 7.3


Article rédigé par Jocelyn S

Commentaires