Symfony UX Icons révolutionne la gestion des icônes dans Symfony en intégrant plus de 200 000 icônes SVG via Iconify, sans CDN, sans sprite et sans configuration complexe. Ce composant télécharge les icônes localement, les met en cache et les injecte directement dans le HTML, optimisant ainsi les performances et la maintenabilité. Avec une simple ligne de code Twig, vous pouvez utiliser des icônes de diverses collections comme Tabler, Lucide ou Material Design Icons. Installation via Composer et usage immédiat sans configuration supplémentaire.
Ce billet explique comment configurer Google Jules, une IA, pour automatiser les tâches de QA, sécurité et performance d'un projet Symfony avec Docker. L'auteur, ne pouvant consacrer beaucoup de temps à la maintenance, utilise Jules comme une équipe de support asynchrone. Il décrit le défi de rendre l'IA compatible avec Docker et partage un script Bash qui configure l'environnement pour que Jules puisse interagir avec la stack complexe (Docker, PostgreSQL, Redis, Meilisearch) sans compromettre l'intégrité du projet. Le script gère la détection dynamique du contexte, les permissions Git et Docker, et permet à Jules de piloter le daemon Docker de la machine hôte.
Cet article explique comment implémenter le pattern CQRS (Command Query Responsibility Segregation) avec Symfony Messenger pour structurer et simplifier le code des applications Symfony. Le CQRS sépare les opérations d'écriture (Commands) et de lecture (Queries), permettant une meilleure organisation, une séparation claire des responsabilités et une validation des données avant la logique métier. L'article détaille les étapes pour créer une application de gestion de bibliothèque, incluant la création d'une entité Book, d'un DTO, la configuration de Symfony Messenger, et l'implémentation des Commands et Queries avec leurs contrôleurs respectifs. Un prérequis est la connaissance de Symfony Messenger.
L'auteur explique la conception d'une architecture d'audit en deux phases pour Symfony, visant à concilier atomicité et performance. La première phase, transactionnelle (onFlush), capture les changements de données dans la base de données, garantissant ainsi la cohérence. La seconde phase, asynchrone (postFlush), envoie les logs d'audit vers des destinations externes sans impacter les performances de l'application. L'article détaille les avantages de cette approche et les choix architecturaux clés, comme l'utilisation de la méthode onFlush plutôt que des callbacks de cycle de vie.
Cet article explique comment gérer proprement les erreurs de validation dans Symfony. L'auteur souligne que, bien que Symfony offre des outils élégants pour la validation des requêtes via les DTOs et les attributs comme #[MapRequestPayload], la gestion des erreurs par défaut reste verbeuse et inconsistante. Il propose une solution propre et moderne en utilisant le bundle Symfony Validation Response, qui transforme automatiquement les erreurs de validation en réponses JSON cohérentes et faciles à consommer pour les clients frontend. L'installation est simple et ne nécessite aucune configuration supplémentaire. L'article inclut un exemple pratique de DTO avec validation et un contrôleur, montrant comment les erreurs sont automatiquement formatées en JSON.
Nacho Colomina explique comment Equillar a migré de SecretBox vers l'encryption AEAD (Authenticated Encryption with Associated Data) pour mieux protéger les données sensibles comme les clés privées des portefeuilles système. L'AEAD offre une authentification des données supplémentaires et lie le texte chiffré à son contexte, empêchant ainsi les attaques de contexte croisé. L'article détaille l'architecture mise en place, incluant des Schema Builders pour générer des données supplémentaires de manière cohérente et des services tagués pour une gestion scalable.
Ce billet explore l'utilisation pratique des Design Patterns en PHP et Symfony, en se concentrant sur des exemples concrets comme Factory, Observer et Facade. Il démystifie ces concepts souvent perçus comme théoriques et montre comment ils structurent et améliorent le code au quotidien. Par exemple, le pattern Factory simplifie la création d'objets complexes, tandis que le pattern Observer permet de découpler les actions déclenchées par des événements. Le billet illustre ces principes avec des extraits de code et des cas d'utilisation dans Symfony, offrant ainsi une compréhension claire et applicable de ces patterns.
Ce guide pratique explique comment créer des microservices hexagonaux performants en PHP avec Symfony et gRPC. Il détaille les avantages de gRPC, comme la communication efficace entre microservices grâce à un format binaire compact et le support de HTTP/2 pour le multiplexage et le streaming bidirectionnel. Le tutoriel couvre l'installation de Symfony avec Docker et Roadrunner, la configuration de Docker Compose, et l'implémentation d'un serveur gRPC avec RoadRunner. Il inclut également des étapes pour créer un projet Symfony, installer les dépendances nécessaires, et configurer un conteneur Docker avec PHP et Roadrunner. Enfin, il montre comment exécuter la première application Symfony via Roadrunner et commencer à implémenter un serveur gRPC.
Cet article explique comment résoudre un problème courant avec les Value Objects en tant qu'identifiants d'entités dans Symfony et Doctrine. L'auteur propose une solution pour éviter la répétition de classes de types DBAL personnalisés en implémentant un type générique DBAL qui supporte ces objets de valeur ID. Le post détaille les étapes pour créer une entité identifiée par un Value Object, résoudre les erreurs de mapping, et enregistrer un type DBAL personnalisé pour gérer ces identifiants de manière efficace.
Cet article explique comment transformer des événements de domaine en webhooks HTTP pour une intégration avec des systèmes externes dans un ERP, en utilisant Symfony. L'auteur décrit l'utilisation d'une interface DomainEvent pour définir des événements, avec un attribut #[TriggerWebhook] pour marquer ceux qui doivent déclencher des webhooks. Les événements sont ensuite traités par un gestionnaire de messages qui envoie les webhooks correspondants, en utilisant les fonctionnalités de Symfony comme les tags de ressources et le composant Webhook. L'article simplifie le processus pour en faciliter la compréhension.
Ce tutoriel explique comment implémenter l'authentification multi-facteurs (MFA) basée sur les mots de passe à usage unique temporels (TOTP) dans Symfony 7, sans utiliser de bundles tiers. Il couvre les principes de fonctionnement du TOTP, la création d'un service TOTP personnalisé, la conception de la base de données pour le 2FA, les flux de configuration et de vérification, ainsi que l'application de l'authentification à deux facteurs basée sur les sessions via des abonnés d'événements. Le tutoriel inclut également la génération de codes QR pour une configuration facile et des composants d'interface utilisateur pour la configuration, la vérification et la désactivation du TOTP. Les prérequis incluent un projet Symfony 7.x avec l'authentification déjà configurée, Doctrine ORM et une compréhension de base de la sécurité Symfony.
Nicolas Jourdan explique comment combiner trois patterns de conception (Specification, Rule et Chain of Responsibility) pour gérer efficacement les règles métier complexes en PHP. L'article détaille d'abord le pattern Specification, qui transforme les conditions métier en objets réutilisables et testables, évitant ainsi les if imbriqués et le code dupliqué. Il présente ensuite une implémentation moderne de ce pattern avec une interface de base et des classes pour les opérations logiques (AND, OR, NOT). Cette approche permet de construire des conditions métier claires et modulaires, facilitant ainsi la maintenance et l'extensibilité du code.
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.
Dans cet article, l'équipe de JoliCode décrit comment ils ont migré un petit projet en production de Symfony 7.3 vers la toute récente version 8.0, en passant d’abord par la 7.4 pour corriger l’ensemble des dépréciations : après avoir mis à jour les « recipes » via Symfony Flex, ajusté les dépendances (souvent en forçant les forks des bundles encore non compatibles), modifié les imports d’attributs (ex. @Route → #[Route]) et les appels aux contraintes (remplacement d’arguments de type tableau par des arguments nommés), ils ont finalement basculé sous PHP 8.4 et lancé Symfony 8 avec succès en production. Le bilan est positif : l’opération s’est révélée relativement simple pour un petit code-base — mais JoliCode rappelle que, pour un projet sérieux, rester sur Symfony 7.4 (version LTS) reste un choix plus prudent.
Ce billet explore le concept de Carbon Aware Computing pour réduire l'empreinte carbone des sites web. L'auteur critique le greenwashing courant (badges verts, modes sombres) et propose une approche technique concrète. Il explique comment il utilise les données en temps réel de RTE (Réseau de Transport d'Électricité) pour adapter la consommation énergétique de son site. Un service Symfony, le CarbonAwareService, récupère ces données et gère les cas de défaillance via un mode dégradé. Selon l'intensité carbone du réseau, le site active des modes "Éco" ou "Critique", modifiant subtilement l'interface utilisateur pour informer et adapter la consommation.
JoliMediaBundle est un nouveau bundle Symfony développé par JoliCode pour la gestion des médias dans vos projets. Inspiré par une expérience personnelle avec une image de mauvaise qualité, ce bundle répond à des besoins récurrents comme l'upload, le stockage, l'organisation, la transformation, l'optimisation, la diffusion, la sélection et l'affichage des médias. Il offre des fonctionnalités telles que le glisser-déposer, la sélection multiple, le suivi de l'upload, et une gestion flexible du stockage (local ou cloud). Idéal pour les sites vitrines, les plateformes eCommerce ou les applications métier, JoliMediaBundle simplifie la gestion des contenus multimédias.
L'article explore quatre modèles avancés pour résoudre des défis architecturaux complexes en utilisant Symfony 7.x et PHP 8.x. Il aborde des problèmes tels que la gestion des API lentes, la communication avec de multiples endpoints, la création de logs d'audit et le téléchargement de fichiers volumineux. L'auteur illustre ces concepts avec des exemples pratiques, notamment l'utilisation de Symfony Messenger pour découpler les tâches non critiques des interactions utilisateur, améliorant ainsi l'expérience utilisateur. L'article est une ressource précieuse pour les développeurs cherchant à optimiser leurs applications avec Symfony.
Le Model Context Protocol (MCP) est un standard open-source qui simplifie la connexion des modèles de langage (LLM) à vos applications, comme Symfony et PHP. Il agit comme une interface universelle, permettant à n'importe quelle IA compatible d'accéder à vos données en temps réel via un serveur MCP. Cela élimine la nécessité de coder des intégrations spécifiques pour chaque modèle, réduit le "Glue Code", et transforme les LLM en agents autonomes capables d'exécuter des outils. Le MCP offre également une meilleure sécurité et un contrôle accru sur l'accès aux données. L'architecture client-serveur du MCP définit trois primitives principales : Ressources, Prompts et Outils. Avec des bibliothèques comme symfony/mcp-bundle, l'intégration dans Symfony est simplifiée, permettant d'exposer facilement des services Symfony comme des outils MCP via des attributs PHP.
Ce partage explique comment utiliser Symfony 7 et Mercure pour créer une session live réactive sans WebSocket. L'auteur, Jean-Sébastien Christophe, explore l'intégration de Mercure, un protocole de Server-Sent Events (SSE), pour gérer des états de session en temps réel, comme la présence des utilisateurs, sans nécessiter de requêtes répétées ou de boucles côté client. Il détaille la stack technique utilisée (Symfony 7.3, PHP 8.4, Docker, PostgreSQL, MailCatcher) et les avantages de Mercure pour des applications temps réel, tout en prévoyant une future intégration avec FrankenPHP pour optimiser les performances et la sécurité.
Un bundle Symfony pour utiliser les Google Fonts sans enfreindre le RGPD