Accéder au contenu principal

6min.

AFUP Day 2026 Paris, retour sur une journée dans l’écosystème PHP

Ce vendredi 22 mai 2026, l’équipe JoliCode était présente à l’AFUP Day 2026 Paris à l’ESGI Paris pour une journée de conférences. L’ambiance était conviviale et studieuse, avec un programme axé sur l’IA, l’architecture et la productivité.

Nous avons eu l’honneur de présenter deux sujets, Loïck Piera sur Castor 🦫 et Grégoire Pineau sur Symfony IA.

Section intitulée les-temps-forts-techniquesLes temps forts techniques

Le programme a couvert des thématiques essentielles qui font évoluer nos pratiques au quotidien, et a aussi rappelé quelques bases que nous connaissons bien.

La salle de la conférence

Section intitulée intelligence-artificielle-et-innovation-dans-symfonyIntelligence Artificielle et Innovation dans Symfony

L’IA a été au cœur de plusieurs échanges, montrant son intégration progressive dans nos outils quotidiens :

Symfony AI et Embeddings : Grégoire Pineau a présenté son retour sur l’utilisation des embeddings dans Symfony pour des recherches et rapprochements sémantiques poussés – nous vous invitons à retrouver notre récapitulatif de Symfony Live où nous en parlions déjà.

Assistance Générative : Florence Cauchy a partagé un guide pratique sur l’intégration de GitHub Copilot et Claude dans nos workflows. Nous partageons ses conseils :

  • Mise en place de skills ;
  • Définition de guidelines pour les agents ;
  • Exploiter aussi bien le CLI que les agents cloud.

Si vous n’avez pas encore d’assistance par LLM pour coder, c’était une bonne introduction !

Section intitulée outillage-productivite-et-modernisationOutillage, Productivité et Modernisation

Nous avons exploré de nouveaux outils pour optimiser notre productivité :

Castor : Loïck Piera nous a fait découvrir les coulisses de ce task runner open source indispensable 😉 (oui c’est nous qui le développons). L’occasion de parler des outils sur lesquels repose Castor comme symfony/console, et de parler de fonctionnalités peu connues comme :

  • Les events pour étendre le fonctionnement ;
  • Les imports distants pour utiliser des tasks extérieures ;
  • Les remote exécutions, pour lancer des outils sans les installer.

Nous vous invitons à lire les slides qui sont pleines d’informations !

Sidekicks applicatifs : Nicolas Grekas a présenté comment tirer partie de Caddy/FrankenPHP pour faciliter la configuration de nos applications HTTP. Grâce à ces sidekicks, l’application peut continuer à tourner en mode worker (donc sans avoir à redémarrer de 0 à chaque requête, comme c’est le cas avec PHP-FPM) mais en ayant sa configuration à jour :

  • côté application, on récupère une valeur de configuration, qui est locale et toujours à jour, grâce à un simple appel à une fonction ;
  • un thread tourne à côté pour mettre à jour cette valeur dès qu’il y a un changement (ce thread est setup très simplement dans Caddy / FrankenPHP).

Il aimerait voir cette nouvelle manière de faire devenir un standard dans l’écosystème PHP, à la place du traditionnel php-fpm, afin d’être égaux avec les technos alternatives à PHP comme node, qui proposent des comportement similaires.

Section intitulée architecture-et-qualite-du-codeArchitecture et Qualité du Code

La durabilité logicielle et les bonnes pratiques restent fondamentales :

Qualité avec PHPStan : Vincent Langlet & Étienne Dhennin nous font la présentation de leur mise en place d’un écosystème de qualité chez Weglot. Ils nous ont présenté les différents fixers, linters et outils de tests disponibles et qu’ils ont utilisés, pour répondre à leur définition de la qualité : la capacité d’un système à remplir son rôle aujourd’hui comme demain, au travers de trois dimensions : fonctionnelle, temporelle et humaine. La direction de l’entreprise avait besoin de justifications pour le temps passé à faire de la qualité, et ils ont donc introduit un métrique original : le taux de hotfix en production (et donc oui il a baissé).

Parmi leurs retours d’expérience sur PHPStan en particulier :

  • Ne pas générer de baseline sur les projets legacy, prioriser les niveaux « bas » (jusqu’au niveau 5) – nous sommes partagés sur ce point car la baseline permet justement de pouvoir contribuer à des projets legacy avec une analyse statique élevé sur nos nouveaux développements ;
  • Privilégier les extensions spécifiques à votre projet (phpstan-doctrine par exemple) aux niveaux 9 et 10, souvent superflus.

API Design Pragmatique : Amaury Bouchard a exploré des alternatives au design d’APIs. Il critique pas mal JWT car ça ne gère pas l’expiration par exemple. Un des points que nous partageons est que HTTP Basic aujourd’hui c’est tout à fait valide et sécurisé (car en HTTPS il n’y a pas de « fuite » des identifiants). Le take-away du talk concerne le choix entre RPC et REST. Vouloir utiliser absolument du REST alors que notre API ne gère pas des états mais des actions est un mauvais choix de design. En résumé :

  • RPC pour les API qui font des actions (envoyer un mail, publier des redirections…) ;
  • REST pour les API qui modifient des états, le CRUD, etc.

En bref, un appel à la simplicité, quitte à remettre en questions des dogmes acquis depuis très longtemps, de très bons sujets de réflexion lors de votre prochaine conception d’API.

Tests sans Mocks : Imen Ezzine a présenté une solution intéressante pour tester efficacement des APIs externes sans recourir aux mocks – et surtout pour pallier à l’imcompatibilité de PHP-VCR avec le client HTTP de Symfony.

En utilisant le format HAR, un nouveau decorator RecorderHttpClient, et un simple attribut #[UseRecord] sur les fonctions de test (via le bridge phpunit), nous pouvons enregistrer une réponse API, de sorte à pouvoir utiliser plus tard cet enregistrement pour simuler des appels à une API externe. Ainsi, pas besoin de créer un mock ! L’appel est joué réellement une seule fois, puis réutilisé directement au moment de lancer les tests. Un mécanisme permet de configurer son mode d’enregistrement, pour rafraîchir périodiquement, rejouer l’appel à chaque fois ou au contraire le verrouiller.

L’ensemble apparaît comme une solution efficace et très élégante pour s’affranchir d’une problématique que nous avons tous déjà rencontrée. Une PR est soumise sur Symfony 8.2.

Gestion des Exceptions : Smaïne Milianni a récapitulé les meilleures pratiques pour gérer et logguer les exceptions proprement. De bons rappels et peut être même des guidelines à coller dans nos AGENTS.md !

  • Relancer systématiquement les exceptions attrapées dans les couches “profondes” de l’application (métier, infra…), pour les gérer uniquement dans les couches d’interface.
  • Ne pas catcher la terre entière (catch \Exception) ;
  • Ne pas catcher Throwable si on est bas niveau ;
  • Ne jamais « rien faire » dans le « catch » (il faut au moins un log) ;
  • Utiliser une exception pour faire du contrôle de flow classique (nous sommes un peu partagé à ce sujet aussi – c’est parfois élégant) ;
  • Catcher et relancer une exception sans n’avoir rien changé / rien fait : autant de rien catcher ;
  • ne jamais oublier l’argument $previous quand on rethrow / mute une exception ;
  • créer des exceptions custom, utiliser des constructeurs statiques… pour nos exceptions métier.

Imen Ezzine sur scène

Section intitulée sujets-intemporelsSujets intemporels

Passkeys et WebAuthn : Sylvain Combraque nous a fait un rapide cours historique sur les manières de stocker les mots de passe utilisateurs, du très sécurisé plaintext jusqu’au hashage, sans oublier l’OICD pour nous montrer comment avec le temps, nous avons pu répondre aux questions de sécurité liées à nos systèmes d’authentification. Il nous a finalement expliqué qu’au final, la manière la plus simple de sécuriser nos mots de passe, c’est de ne pas en avoir ! Chose possible aujourd’hui et depuis 2015 grâce aux Passkeys, une solution d’authentification locale, unique par compte, et impossible à faire fuiter. Cela fait 10 ans que nous en entendons parler et que les briques techniques existent, et pourtant, ce n’est toujours pas « grand public » ! Les mots de passe ont encore de beaux jours devant eux… À nous de faire bouger les lignes !

Gotchas PHP : Frédéric Bouchery a animé une session interactive sur les comportements inattendus et les subtilités du langage. Par exemple, saviez-vous que new daTeTimE(); fonctionne aussi bien que new DateTime(); mais que vos constantes elles, sont sensibles à la casse ? C’était une façon très ludique de nous expliquer des principes du langage comme la compilation, les changements de syntaxes…

Section intitulée conclusionConclusion

Au-delà de la technique, l’AFUP Day a été un moment de partage plein d’échanges et riche en apprentissages. Nous sommes vraiment ravis de retrouver un événement à Paris.

Les perspectives ouvertes par l’IA et la modernisation des outils promettent des projets passionnants pour JoliCode. Un grand merci à l’AFUP Paris et à tous les bénévoles pour cette organisation impeccable 👏 Comptez sur nous l’année prochaine !


Cet article porte sur la conférence Afup Day Paris 2026.

Afup Day Paris 2026

Commentaires et discussions

Ces clients ont profité de notre expertise