M

Suivez nous

Pourquoi PHP 8.5 va (vraiment) te simplifier la vie

Une version discrète mais utile

La sortie de PHP 8.5 approche, et si elle ne fait pas autant de bruit qu’un changement de version majeure, PHP 8.5 est exactement le genre de version qui ne fait pas de bruit, mais qui change la vie au quotidien. Pas de grosse révolution syntaxique, pas de nouvelle manière d’écrire une classe, pas de feature marketing. Mais une succession de petits ajustements bien pensés qui font la différence quand on passe 8 heures par jour les mains dans le code.

Lisibilité, enfin

D’abord, il y a le pipe operator. Celui-là, les devs JavaScript l’attendaient depuis longtemps en PHP, et on comprend pourquoi. Fini les cascades de fonctions imbriquées illisibles, on peut enchaîner les traitements proprement, ligne par ligne, comme on structure une idée. Le code redevient lisible, déboguable, maintenable. Et honnêtement, sur des blocs un peu verbeux, le gain en clarté est énorme.

// Avant
$result = strtoupper(trim(strip_tags($input)));

// Avec le pipe operator
$result = $input
    |> strip_tags($$)
    |> trim($$)
    |> strtoupper($$);

Un vrai backtrace pour les erreurs fatales

Autre amélioration bien sentie : les erreurs fatales disposent enfin d’un vrai backtrace. Jusqu’à présent, quand ça plantait salement, on se retrouvait avec un fatal error brut, sans piste, sans contexte, sans rien. Maintenant, on pourra au moins comprendre d’où ça vient sans devoir rejouer la scène en local. Une fonctionnalité simple, mais qui va faire gagner un temps fou, notamment sur les projets legacy où les logs sont souvent aux abonnés absents.

Des fonctions qu’on attendait depuis trop longtemps

Côté fonctions, on note quelques ajouts qui vont directement dans le bon sens. array_first() et array_last() vont éviter des bricolages à base de reset() ou de end() dans tous les sens.

$items = ['a', 'b', 'c'];

array_first($items); // 'a'
array_last($items);  // 'c'

get_error_handler() et get_exception_handler() permettent de récupérer les handlers en place, ce qui était jusqu’ici un angle mort bien agaçant.

$handler = get_error_handler();
$exceptionHandler = get_exception_handler();

Et la nouvelle option php --ini=diff, qui compare votre config actuelle avec celle par défaut, est un petit bijou pour ceux qui gèrent plusieurs environnements et ne savent plus trop ce qui a été surchargé ou oublié.

php --ini=diff

Les dépréciations à ne pas ignorer

Bien sûr, il y a aussi son lot de dépréciations. Certaines constantes MHASH passent à la trappe, certaines conversions implicites de types vont dégager, et des comportements douteux (comme le fait de retourner autre chose qu’une string depuis un output handler) sont enfin condamnés. Rien de dramatique, mais il faudra prévoir un petit audit de compatibilité avant de sauter le pas en production. Le genre de truc qu’on laisse toujours à plus tard, jusqu’au jour où la recette explose.

Il est bon aussi de noter que pour le moment, Magento n’est pas compatible PHP 8.5

En somme !

En résumé, PHP 8.5 ne va pas changer la face du web. Mais c’est une mise à jour de fond, intelligente, cohérente, et très orientée développeurs. Elle permet d’écrire un code plus lisible, de mieux diagnostiquer les plantages, de profiter de fonctions utiles qu’on codait à la main depuis 10 ans. C’est le genre de version qui ne fait pas le buzz, mais qui rend chaque journée un peu plus confortable. Et c’est déjà beaucoup.