Aller au contenu
AFUP AFUP Day 2025 Baromètre Planète PHP PUFA
 

Les Exception : le trou dans la raquette du typage

Description

Ces dernières années les outils d'analyse statique du code (comme Psalm ou PHPStan) se sont imposés dans nos projets. Ils permettent de nous montrer des erreurs en l'espace de quelques secondes sans avoir à exécuter notre code.

Les exceptions font également partie intégrante de nos projets car elles offrent une manière simple pour sortir du chemin d'exécution nominal. Cependant ce mécanisme opère en dehors du système de typage (puisqu'elles n'apparaissent pas dans la signature des fonctions) ce qui empêche les outils d'analyse statique de vérifier que chaque Exception est gérée correctement. Ce manque d'outillage nous impose de faire cette vérification via des tests fonctionnels (donc plus lents à détecter les problèmes).

On verra comment le pattern Monad (via Either et Maybe) venant de la programmation fonctionnelle nous permet de gérer nos exceptions d'une manière compréhensible par les outils d'analyse statique. Le but étant d'accélerer et d'augmenter la fiabilité de la gestion des erreurs en supprimant le besoin d'écrire des tests nous même.

Conférence donnée lors du Forum PHP 2021, ayant eu lieu les 21 et 22 octobre 2021.

Informations complémentaires

Vidéo

Le speaker

Baptiste LANGLADE

Baptiste Langlade est un développeur PHP (certifié symfony2) passionné par indexer internet, Neo4j et le fonctionnement du cerveau.

Commentaires

De toutes les conférences auxquelles j'ai assisté lors du forum, c'est celle qui me donne le plus envie d'ouvrir mon éditeur et de tester ! Les exemples choisis sont judicieux. Le concept de Monads que j'ai découvert me paraît très puissant, si bien que je me pose la question suivante : serait-il possible ? souhaitable ? que de telles fonctionnalités soient directement portées par PHP ? (je précise que je n'ai jamais codé en C pour PHP, donc désolé si la question ne fait pas pleinement sens). En tout cas, un grand merci !
Vincent Laurier, le 22/10/2021
Super intéressant, je n'avais jamais entendu parler de Monad auparavant et c'est vrai que ça donne envie de jouer avec :) Je ne suis pas sûre de pouvoir l'appliquer sur mon projet mais déjà j'ai découvert le concept !
Marine Gandy, le 26/10/2021