Le blog

AFUP Day Lille 2026 : notre retour sur la conférence

Publié le 27 mai 2026

Cette année encore, nous étions présents à l’AFUP Day, l’événement printanier incontournable organisé par l’Association Française des Utilisateurs de PHP. Bien que nous ayons été présent·es dans trois villes sur quatre, voici le retour d’Alex sur l’édition lilloise, qui a accueilli près d’une centaine de participants au Théâtre de la Comédie de Lille.

Entrée du Théâtre de la Comédie

Le progrès réside dans les BC Breaks

Comme toujours, Gina Banyard propose des sujets pertinents et qui sortent de l’ordinaire. À travers des exemples culturels et historiques fascinants (la normalisation ferroviaire, le sens de circulation en Suède ou le réseau électrique japonais scindé en deux), elle a brillamment démontré que la gestion des ruptures de compatibilité (BC Breaks) dépasse largement le cadre du logiciel : c’est un défi universel et quotidien.

Maintenir deux systèmes en parallèle coûte cher, et face à la résistance légitime des utilisateurs lors de migrations complexes, s’appuyer sur des standards est vital. Mais là où le monde physique utilise des lois ou des normes ISO, le logiciel tente de rationaliser ce chaos avec le Semantic  Versioning (SemVer) (dont s’affranchissent toutefois Linux ou HTTP).

Gina nous a invités à ne pas juste « résoudre » le problème du changement, mais à le dissoudre en repensant le système pour que la rupture disparaisse. Une superbe leçon d’ingénierie et de résilience, tant pour notre code que pour le monde qui nous entoure.

Quand faire des filtres à facettes n’est pas si simple

C’est l’un de mes coups de cœur de l’AFUP Day Lille ! Avec un excellent sens du storytelling, Nicolas Duplaix (Widop) nous a partagé un retour d’expérience ultra-percutant sur la gestion des filtres à facettes dynamiques dans un contexte SaaS. Il a illustré ce grand classique où un commercial vend une fonctionnalité sur mesure, entraînant l’équipe d’un premier POC vers une explosion de demandes clients. Face à des milliers d’appels quotidiens aux structures de données changeantes, l’équipe a choisi de changer de solution de recherche en migrant de PostgreSQL vers OpenSearch.

Nicolas est entré dans le vif de la technique en détaillant la modélisation (l’arbitrage crucial entre les structures object et nested) et la reconstruction dynamique des filtres via des EventListeners Symfony (FormType).

Au-delà de cette belle démonstration d’ingénierie, on a surtout ressenti le côté humain de ce projet. Cette conférence a résonné comme un rappel fondamental : en développement, il est capital de comprendre le besoin métier et la variabilité de la donnée avant de s’enfermer dans une solution technique. Un vrai et excellent REX !

S’y retrouver dans le dédale du code

Une très bonne conférence, accessible et facile à suivre ! Yannick Chenot a utilisé une métaphore parlante en comparant l’exploration d’un code obsolète à un labyrinthe mental. Il a retracé la « solidification » de PHP, version après version : de l’introduction de l’encapsulation en PHP 5, en passant parle typage strict de PHP 7, le support de l’immutabilité avec la propriété readonly en PHP 8.1 jusquà la visibilité asymétrique de PHP 8.4; montrant comment le langage a évolué pour éliminer les comportements imprévisibles et libérer la charge mentale du développeur.

Yannick a formalisé cette approche par le principe du “Closed-by-Default” (Value Objects, DateTimeImmutable), qui fait écho au précepte YAGNI en fermant d’office les pistes inutiles. L’un des points les plus pertinents de sa présentation a été de démontrer qu’une vraie corrélation existe entre un code strict et l’efficacité d’outils d’analyse statique comme PHPStan ou Rector.

En résumé, l’évolution des releases a permis l’émergence de superbes bonnes pratiques : plus le code est rigoureux à l’écriture, plus l’analyse automatique est pertinente et va en profondeur, et plus l’esprit du développeur est libre de se concentrer sur la valeur métier.

2 secondes pour détecter la fraude : orchestrer Kafka dans un système bancaire critique

Mathieu Desnouveaux a partagé un retour d’expérience sur la mise en conformité réglementaire d’un système bancaire traitant 500 000 virements quotidiens. L’enjeu était d’implémenter la directive européenne Verification of Payee (VoP), qui impose de vérifier instantanément (en moins de 10 secondes) la concordance entre le nom d’un bénéficiaire et son RIB (Match, Closed Match ou No Match).

Pour intégrer ces contrôles sans impacter le parcours utilisateur, l’équipe a déployé une architecture asynchrone robuste : l’API métier publie l’événement dans Kafka (messages validés par schéma AVRO), tandis qu’un proxy REST communique avec le partenaire VoP externe via un pattern Request-Reply. Pour optimiser la latence, le processus se déclenche dès la saisie du bénéficiaire. Côté déploiement, le chantier a été isolé et branché progressivement sur le trafic réel « à blanc » (sans gestion du retour) pour valider les tests de charge, révélant un taux initial de 80 % de Match.

Un sujet technique, un contexte métier critique et une directive européenne stricte, rien de mieux pour un retour d’expérience captivant. Mathieu a su embarquer la salle pour décortiquer les coulisses du VoP, une mécanique que tout le monde utilise déjà sans forcément savoir comment.

Et si nous cherchions des morceaux de musique ?

Bonne surprise que ce sujet pour reprendre le rythme en début d’après-midi ! David Pilato a proposé un REX captivant sur l’utilisation d’Elasticsearch pour concevoir un système de recherche musicale par similarité, proche du fonctionnement de Shazam.

La méthode repose sur la recherche vectorielle : un modèle de Machine Learning traduit les caractéristiques des fichiers audio en embeddings (des suites de nombres servant de coordonnées mathématiques). La pertinence des résultats dépend donc directement de l’entraînement de ce modèle. Pour sa démo, David a utilisé des extraits chantés ou fredonnés « maison », prouvant en direct que le système retrouve un morceau original à partir d’une simple interprétation vocale brute, tout en s’amusant des aléas et de la sensibilité de l’effet démo.

Une excellente démonstration fonctionnelle qui montre tout le potentiel technique du combo Elasticsearch et Machine Learning.

PHP, Mercure et IoT – Quand PHP devient plus que Full Stack

C’était l’une des conférences que j’attendais le plus à l’AFUP Day Lille, d’autant qu’elle était présentée par l’un de nos coopérateurs (big up à lui) ! Yohan Giarelli nous a plongés dans l’IoT en présentant une solution de déblocage de casiers autonomes codée en PHP. Face à de fortes contraintes énergétiques et réseau, le système embarque PHP CLI sur un Raspberry Pi pour contrôler une gâche électrique.

Yohan Giarelli sur la scène de l'AFUP Day, avec ses slides en arrière plan.

Le secret d’une telle implémentation réside dans l’utilisation de PHP FFI (Foreign Function Interface), qui permet d’exploiter les ports GPIO de la carte en appelant directement une bibliothèque C, sans aucune surcouche. Côté communication, après avoir écarté REST, AMQP et MQTT pour des raisons de complexité ou de sécurité, le choix s’est porté sur Mercure. Le Hub Mercure redistribue ainsi les consignes de déblocage en temps réel à la PWA et au casier via des Server-Sent Events (SSE). Pour connecter le tout d’un point de vue applicatif, Yohan a choisi de rester fidèle au framework Symfony avec les composants Console et HttpClient.

Un POC fonctionnel et passionnant qui prouve avec brio que PHP a totalement sa place dans le monde du matériel embarqué !

Test simplifié à moitié pardonné

Une conférence particulièrement intéressante qui rappelle une règle d’or : nos tests méritent la même exigence de qualité que notre code de production. Romain Canon a captivé la salle dès le début avec une mise en scène parlante : un écran faisant défiler les lignes interminables d’un test ultra-verbeux, illustrant parfaitement la difficulté de comprendre un échec de test au quotidien.

Loin des sujets théoriques habituels, ce REX très concret a démontré qu’une couverture de code (code coverage) élevée ne suffit pas ; il faut viser la pertinence via le Mutation Testing (indicateur MSI). Pour y parvenir, Romain a partagé des clés immédiatement applicables : limiter les Mocks, structurer ses tests avec le pattern AAA (Arrange-Act-Assert) et simplifier la gestion des données. Son combo gagnant ? Faker, les named arguments de PHP 8.0 et notamment le pattern Object Mother, pour simplifier la création d’objets.  Pour aller plus loin, il a également mentionné Foundry, qui permet une gestion encore plus fine des données couplées directement avec Doctrine.

Un format pratique et hyper pertinent pour transformer nos suites de tests en outils lisibles, robustes et faciles à faire évoluer.

Design patterns émergents IA dans Symfony : stratégie de prompts, pipelines, agents, orchestrateurs

Guillaume Giroux a proposé un panorama des design patterns émergents pour intégrer l’IA dans Symfony. Bien que la conférence fût un peu plus théorique, Guillaume a pris le temps de parfaitement définir chaque concept et de les lier entre eux pour montrer comment bâtir une architecture robuste, découplée et testable face aux spécificités des LLM.

Pour illustrer sa démarche, il a introduit le concept de NightShip : un système automatisé qui détecte, qualifie, enrichit et résout les erreurs de production la nuit pour proposer une Pull Request prête au réveil du développeur.

La présentation a mis en lumière 6 patterns majeurs pour structurer ces intégrations :

  • Schema Constrained Generation : Forcer le LLM à répondre dans un format strict (JSON) pour garantir un contrat d’interface fiable.
  • Prompt Chaining : Découper une tâche complexe en sous-prompts séquentiels.
  • Routing Workflow : Classifier une demande en amont pour l’orienter vers le bon traitement.
  • Enrichissement de contexte (RAG) : Injecter des données spécifiques. La qualité dépend ici de la précision de la chaîne d’indexation, pas de la taille du payload.
  • Tool Use : Permettre au LLM d’appeler des fonctions de l’application ou des API externes.
  • Multi-Agent Orchestration : Distribuer les tâches entre plusieurs agents spécialisés, ce qui implique une gouvernance stricte.

CI/CD à toutes les sauces : recette d’un .gitlab-ci.yml savoureux pour projets PHP multi-environnements

Pour clore la journée, Nicolas a fait preuve de pédagogie en reprenant le socle de base pour construire, pas à pas, un pipeline GitLab CI optimisé et adapté à nos contraintes (production, recette, release). En filant une métaphore culinaire pour rendre les concepts DevOps accessibles, sa présentation s’est articulée autour de trois axes :

  • La modularité comme une recette de chef : concevoir un fichier .gitlab-ci.yml réutilisable et facile à maintenir grâce aux fonctionnalités avancées de GitLab (include pour découper en sous-fichiers, extends et ancres YAML pour factoriser les tâches répétitives).
  • La gestion fine des secrets : isoler et sécuriser les configurations en injectant dynamiquement les variables d’environnement, évitant ainsi toute corruption entre les différents environnements.
  • Une stratégie de déploiement « à la carte » : orchestrer finement les règles de déclenchement (tests, analyse statique, déploiement) selon qu’il s’agisse d’une Merge Request, d’un tag de release ou d’un push sur la branche principale.

Nicolas a ainsi défini chaque concept clé et rappelé l’importance de respecter ces bonnes pratiques. Un REX méthodique et indispensable pour structurer proprement nos déploiements !

Conclusion

En résumé, cette 8ème édition de l’AFUP Day Lille fut une véritable réussite ! Portée par un soleil de plomb et des conférences passionnantes, la journée a une nouvelle fois prouvé la ferveur et le dynamisme de la communauté autour de notre langage de programmation préféré. Pourtant, dans un contexte économique difficile, cette année a été marquée par une baisse notable du sponsoring et de la présence globale. Plus que jamais, l’avenir de ces rendez-vous repose sur notre mobilisation collective : nous pouvons tous soutenir l’association en participant aux événements, en partageant nos retours sur les réseaux sociaux et en faisant vivre la communauté au quotidien. Coup de chapeau également aux bénévoles : sans leur énergie et leur temps précieux, cette journée n’aurait tout simplement pas pu avoir lieu. Maintenant, cap sur les prochaines conférences PHP de l’année auxquelles on a hâte de participer : l’API Platform Con (avez-vous vu le programme ?), le Forum PHP (le CFP vient d’ouvrir !), et la SymfonyCon Varsovie.