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.

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-doctrinepar 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
Throwablesi 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
$previousquand on rethrow / mute une exception ; - créer des exceptions custom, utiliser des constructeurs statiques… pour nos exceptions métier.

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.
Commentaires et discussions
Ces clients ont profité de notre expertise
Afin de soutenir le développement de son trafic, Qobuz a fait appel à JoliCode afin d’optimiser l’infrastructure technique du site et les échanges d’informations entre les composants de la plateforme. Suite à la mise en place de solution favorisant l’asynchronicité et la performance Web côté serveur, nous avons outillé la recherche de performance et…
Nous avons réalisé la refonte du site de l’agence Beautiful Monday en utilisant nos compétences HTML5/CSS3 côté front-end, et le framework Symfony2 côté back-end. Afin de s’afficher correctement sur n’importe quel appareil, le site est entièrement responsive. La partie intégration a été effectuée avec un grand soin, en respectant parfaitement la maquette…
Armadillo édite un moteur de base de données spécialisé dans la gestion de données multimédias et des métadonnées associées. Depuis de nombreuses années, cette plateforme est accessible par le biais d’un connecteur PDO pour PHP, dont nous avons facilité l’intégration en développant une librairie PSR-0 ainsi qu’un bundle Symfony. Notre mission a principalement…