tech

Symfony Tui : construire des interfaces interactives dans le terminal avec PHP

26 March 2026
5 min de lecture
6 vues
Sébastien Muler

Symfony Tui : construire des interfaces interactives dans le terminal avec PHP

Fabien Potencier vient d'annoncer un tout nouveau composant Symfony : Tui. Cette bibliothèque PHP permet de créer des interfaces utilisateur riches et interactives directement dans le terminal. Une annonce majeure pour tous les développeurs qui travaillent sur des outils CLI avec PHP et Symfony.

Source originale : Introducing the Symfony Tui Component — Symfony Blog


Pourquoi un nouveau composant ? La séparation des responsabilités

Depuis 15 ans, le composant Console est l'un des piliers de l'écosystème Symfony. Il gère les commandes, les arguments, le formatage de la sortie, les questions interactives, les tableaux, les barres de progression... Bref, il fait beaucoup.

Mais avec le temps, deux responsabilités bien distinctes se sont retrouvées mélangées dans un même composant :

  • Structurer des applications CLI : définir des commandes, gérer les arguments et options, organiser l'architecture.
  • Construire des expériences interactives dans le terminal : widgets, layouts, gestion des inputs, rendu en temps réel.

La décision prise avec Tui est logique et conforme aux principes SOLID : chaque composant doit avoir une responsabilité unique et bien définie.

Console reste concentré sur ce qu'il fait de mieux : la structure des commandes et la gestion des arguments.

Tui prend en charge tout ce qui concerne l'interactivité avancée : widgets, mises en page, styles, gestion des événements clavier et souris, et rendu en temps réel.

Cette séparation nette offre un gain de clarté architecturale et ouvre la porte à des outils CLI d'une qualité visuelle et d'une ergonomie bien supérieures à ce qui était possible jusqu'ici.


Un toolkit complet de widgets pour le terminal

Tui ne se contente pas d'introduire un concept : il embarque d'emblée un ensemble complet de widgets prêts à l'emploi.

Les widgets disponibles

  • TextWidget : pour les labels, les titres et les bannières ASCII art générées en FIGlet.
  • InputWidget : un champ de saisie mono-ligne avec gestion du curseur, du défilement et du collé.
  • EditorWidget : un véritable éditeur de texte multi-lignes avec retour à la ligne automatique, undo/redo et un kill ring (copier-coller façon Emacs).
  • Et d'autres widgets pour construire des interfaces complètes.

Gestion des layouts

Comme dans les frameworks TUI modernes (Ratatui en Rust, Bubble Tea en Go), Tui propose un système de mise en page flexible permettant d'organiser les widgets en lignes, colonnes et blocs, avec gestion des marges et des bordures.

Gestion de la souris et des événements

Tui supporte nativement la gestion de la souris et des événements clavier, ce qui permet de construire des interfaces vraiment interactives, sans se limiter aux simples flux de questions/réponses du composant Console.

Rendu en temps réel

L'un des points forts du composant est son moteur de rendu différentiel : seules les parties de l'écran qui ont changé sont mises à jour, ce qui garantit des performances fluides même sur des interfaces complexes.


Ce que cela change concrètement pour les développeurs PHP/Symfony

Pour les équipes qui développent des outils CLI avec PHP, Tui représente un vrai saut qualitatif.

Avant Tui

Avec le composant Console seul, les possibilités interactives restaient limitées : questions simples, sélection dans une liste, barre de progression. Difficile d'aller au-delà sans bricoler des solutions complexes ou dépendre de bibliothèques tierces.

Avec Tui

Il devient possible de créer des outils CLI avec :

  • Des formulaires multi-champs navigables au clavier.
  • Des éditeurs de texte intégrés directement dans le terminal.
  • Des dashboards temps réel pour surveiller des processus.
  • Des interfaces de configuration visuelles pour remplacer de longs fichiers YAML.
  • Des outils de débogage interactifs au sein même d'une application Symfony.

Pour les équipes MulerTech qui développent des applications PHP/Symfony avec des composants CLI, cela ouvre des perspectives concrètes : scripts de déploiement interactifs, outils d'administration interne, générateurs de code enrichis, ou encore interfaces de monitoring directement dans le terminal.

Compatibilité et intégration

Tui est conçu pour fonctionner en complément du composant Console, et non pour le remplacer. Une application Symfony peut très bien utiliser Console pour sa structure de commandes et faire appel à Tui uniquement pour les parties qui nécessitent une interface riche. Les deux composants coexistent naturellement.


Un composant open source en cours d'intégration

Fabien Potencier a ouvert la pull request officielle pour intégrer Tui dans le dépôt Symfony. Le composant est donc encore en phase de revue et d'intégration, mais son annonce publique marque déjà un tournant.

Comme tous les composants Symfony, Tui sera :

  • Open source sous licence MIT.
  • Utilisable de manière autonome, sans avoir besoin de l'intégralité du framework.
  • Documenté selon les standards de qualité habituels de Symfony.
  • Testé avec la rigueur qui caractérise les composants du cœur du framework.

C'est aussi une invitation à la communauté PHP à contribuer, à tester et à faire remonter des retours pendant cette phase d'intégration.


Conclusion

Avec le composant Tui, Symfony franchit une nouvelle étape dans l'outillage des développeurs PHP. Là où le composant Console a posé les bases de la CLI en PHP depuis 15 ans, Tui apporte une couche d'interactivité et d'expressivité jusqu'ici réservée à des écosystèmes comme Go ou Rust.

Pour les équipes qui développent des outils internes, des scripts métier ou des commandes Symfony avancées, ce composant mérite toute l'attention. Il ne s'agit pas d'une fonctionnalité anecdotique, mais d'un outil structurant pour élever la qualité des interfaces en ligne de commande PHP.

Restez attentifs à l'évolution de la pull request et à la documentation officielle à venir sur symfony.com.

Partager cet article