Mathieu Desnouveaux

Concevoir des TUI en PHP : le composant Symfony Terminal

Présentation par Fabien Potencier sur le composant Symfony Terminal pour créer des interfaces TUI en PHP au Symfony Live Paris 2026

Sketchnote illustrant la conception de TUI en PHP avec le composant Symfony Terminal, présentée par Fabien Potencier au Symfony Live Paris 2026. Le schéma montre que l'interface de terminal fonctionne aussi pour les agents. Les widgets s'écrivent en PHP ou Twig, avec une collection native et une customisation facilitée. La boucle asynchrone via PHP Fiber et Revolt rend le rendu non bloquant. L'architecture propose de séparer comportements et interfaces : Console d'un côté, TUI de l'autre. Le composant exploite les fonctionnalités natives des terminaux : Focus Event, Key Binding et Mouse (expérimental). Le stress test passe par la création de jeux comme 2048 et Tetris, mais aussi les slides.

Cette sketchnote a été réalisée lors du Symfony Live Paris 2026 le 26 mars 2026. Elle illustre la présentation "Concevoir des TUI en PHP : le composant Symfony Terminal" donnée par Fabien Potencier, qui explore comment créer des interfaces utilisateur pour le terminal (TUI) directement en PHP.

Contenu de la présentation

Fabien Potencier présente le composant Symfony Terminal pour concevoir des TUI (Terminal User Interface) en PHP, utilisables aussi bien pour les humains que pour les agents. Les widgets s'écrivent en PHP ou en Twig, avec une collection native et une customisation facilitée. La boucle asynchrone repose sur PHP Fiber et Revolt pour un rendu non bloquant. L'architecture propose de séparer les comportements des interfaces : Console pour les scripts classiques, TUI pour les interfaces interactives. Le composant exploite les fonctionnalités natives des terminaux : Focus Event, Key Binding et Mouse (expérimental). Pour valider le tout, Fabien a développé des jeux comme 2048 et Tetris, et même les slides de sa conférence en TUI.

Thèmes:
🐘 PHP 🛠️ Tools
Événement:
🎤 Symfony Live

Source: Fabien Potencier
Publié le 31 mars 2026