L’article explique pourquoi les commandes exécutées via le composant Process de Symfony perdent leur formatage (couleurs, barres de progression) par rapport à un terminal classique. Ce comportement s’explique par l’utilisation par défaut de pipes (tuyaux) plutôt que de terminaux réels, poussant les programmes comme Composer à désactiver les codes ANSI pour éviter des sorties illisibles.
Pour résoudre ce problème, Symfony propose deux méthodes. La première, setTty(true), relie directement le flux du sous-processus au terminal réel, restaurant les couleurs mais empêchant toute capture de la sortie par le script PHP. La seconde, setPty(true), utilise un Pseudo-Terminal (PTY) pour émuler un terminal, offrant l’illusion d’un environnement interactif tout en permettant de récupérer la sortie via getOutput().
Symfony 8.1 introduit une fonctionnalité innovante dans sa console : la possibilité de coller directement une image depuis le presse-papiers (via Ctrl+V) dans une commande, sans avoir à spécifier un chemin de fichier. Cette innovation, présentée lors de l'AFUP Day Lyon, simplifie l'interaction en gérant automatiquement la conversion du contenu binaire de l'image en un fichier temporaire accessible dans le processus PHP. L'API publique, illustrée par une commande exemple, est minimaliste : l'argument de type InputFile associé à l'attribut #[Ask] permet de demander à l'utilisateur de fournir une image, que ce soit par collage ou par saisie de chemin.
Sous le capot, cette fonctionnalité repose sur un mécanisme complexe mais transparent pour l'utilisateur. Symfony détecte les capacités du terminal (comme le mode bracketed paste), gère les protocoles d'images, et crée un fichier temporaire si nécessaire. La commande peut ensuite vérifier la validité du fichier, son type MIME, sa taille et ses dimensions, tout en distinguant si l'image provient d'un collage ou d'un chemin classique via la méthode isTempFile(). Cette approche assure une dégradation élégante dans des environnements moins compatibles, comme les connexions SSH ou les CI.
L'élégance de cette solution réside dans sa simplicité apparente : le développeur n'a qu'à déclarer un argument de type InputFile pour bénéficier d'une interaction avancée, tandis que Symfony s'occupe de toute la logique sous-jacente. Cette abstraction réduit considérablement la complexité pour l'utilisateur final, tout en offrant une expérience fluide et intuitive.
L’article d’Alan Norbauer présente 67 astuces méconnues pour exploiter pleinement les outils de débogage des navigateurs, destinées aux développeurs intermédiaires ou avancés. Il met en avant des techniques comme les logpoints (points de trace) pour afficher des logs sans interrompre l’exécution, ou l’utilisation de conditional breakpoints (points d’arrêt conditionnels) avec des expressions à effets de bord pour modifier le comportement du programme en temps réel.
Parmi les méthodes détaillées, on trouve le profilage de performance rapide via console.time et console.timeEnd, ou encore le traçage des appels de fonctions pour identifier des anomalies comme des appels non appariés. L’auteur explique aussi comment exploiter le watch pane pour surveiller des variables ou des états du DOM, ou encore contourner des chargements de page pour gagner du temps lors du débogage.
Enfin, l’article couvre des astuces spécifiques comme la pause sur changement d’URL, l’inspection du DOM avec JavaScript désactivé, ou la surveillance d’événements pour des éléments précis. Ces techniques permettent d’optimiser le débogage en exploitant des fonctionnalités souvent sous-utilisées des outils de développement.
L’article explique comment créer des commandes console puissantes dans Symfony pour automatiser des tâches comme les imports, les scripts de maintenance ou les opérations administratives, en utilisant le composant Symfony Console qui permet de définir des commandes exécutables via php bin/console. Il montre notamment comment structurer une commande en classe avec un nom, une description, des arguments et des options, puis implémenter la logique dans la méthode d’exécution, tout en utilisant les outils du framework pour gérer l’interaction utilisateur, afficher des messages et organiser proprement le flux d’exécution.
Ce tutoriel explique comment réaliser du web scraping avec une commande Symfony Console, une approche propre et adaptée à la production. L'auteur, Marvelous Akpotu, souligne que le scraping est une tâche longue, susceptible d'échouer, souvent planifiée et automatisée, ce qui en fait une tâche idéale pour les commandes Symfony Console. L'article détaille les étapes pour scraper des données de pays, les parser avec DomCrawler, les trier et les afficher dans un tableau CLI propre. Les packages nécessaires sont symfony/http-client, symfony/dom-crawler et symfony/css-selector. L'auteur met en avant les avantages de cette méthode, comme la séparation des préoccupations, la planification par cron, l'architecture propre, la réutilisabilité et la facilité de refactorisation en jobs asynchrones. Des conseils pour le scraping en production sont également fournis, comme le respect des conditions d'utilisation et du fichier robots.txt, et l'ajout de délais entre les requêtes. Le code source complet est disponible sur GitHub.
Nicolas Jourdan explique comment créer des commandes personnalisées pour Symfony Console de manière professionnelle avec Symfony 7.4. L'article montre l'évolution des bonnes pratiques en partant d'une approche classique, puis en introduisant les commandes invocables et les attributs d'entrée pour un code plus propre et plus lisible. L'exemple concret d'une commande pour importer des avis clients depuis un fournisseur externe illustre ces améliorations.
L’article présente l’utilisation de Make pour simplifier et standardiser les commandes courantes dans un projet Symfony, surtout en environnement Docker. L’auteur partage ses Makefiles personnalisés, qui permettent de lancer des tâches comme l’installation des dépendances (make composer), l’exécution des tests (make test), l’analyse statique (make static-analysis), ou encore la gestion de la base de données (make db-reset), le tout avec des paramètres optionnels pour l’environnement (env=prod) ou des arguments supplémentaires (arg=--testdox). Grâce à Make, les commandes Docker complexes deviennent simples et documentées (ex: make qa pour lancer la vérification de code, l’analyse statique et les tests en une seule commande). L’article propose trois versions de Makefile : pour Docker Compose, Docker seul, et PHP natif, inspirées du projet symfony-docker. L’objectif est d’améliorer la productivité en évitant de retaper des commandes longues et en centralisant la documentation des tâches disponibles. Une solution élégante pour uniformiser les workflows entre projets Symfony.
Tout est dans le titre
Au lieu de lancer XDEBUG_SESSION=1 XDEBUG_MODE=debug XDEBUG_ACTIVATED=1 php bin/console my:command --an-option --an argument on lance bin/console my:command --an-option --an argument -x
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Très intéressant, ce voyage dans le temps ^^
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre