L'article propose une méthode structurée pour mettre à jour un projet Symfony en toute confiance. Il recommande d'utiliser des outils comme Bruno pour tester les routes, de mettre à jour les dépendances et les outils, d'appliquer des analyses statiques avec PHPStan, et de refactorer le code avec Rector. L'article insiste sur l'importance des tests automatisés et des mises à jour progressives pour éviter les régressions.
DDEV propose des environnements de développement PHP basés sur Docker. L'auteur montre comment s'en servir pour Symfony / Vue
L'article explique comment exporter des PDFs prêts à l'impression à partir d'une application Symfony de manière simple et rapide. L'auteur guide le lecteur à travers l'installation de wkhtmltopdf
et du SnappyBundle
, la création de modèles PDF avec HTML et CSS, et la personnalisation du contrôleur Symfony pour générer des PDFs. Le processus permet d'exporter des pages ou des tableaux en PDF, avec des options pour ajuster la mise en page et le style, rendant la génération de PDFs flexible et intégrée à l'application Symfony
.
L'article présente une stratégie Docker éprouvée pour déployer des applications Symfony avec Apache, MySQL et OpenSearch. L'auteur partage son setup personnel utilisant un Dockerfile
et docker-compose
, optimisé pour la production et incluant des ajustements spécifiques à Symfony. L'article met en avant les avantages de Docker pour PHP, notamment la définition de l'infrastructure en tant que code, éliminant ainsi les problèmes de reproductibilité des bugs entre différents environnements
.
L'article explique comment Zenstruck Foundry a révolutionné les tests dans Symfony en permettant de créer des données de test de manière simplifiée et expressive. Cette bibliothèque utilise des factories pour générer rapidement des données pour les entités Doctrine, supporte Faker pour des données aléatoires réalistes, et intègre des fonctionnalités comme les "stories" pour définir des scénarios de données réutilisables. Foundry est particulièrement utile pour tester des modèles de domaine complexes, y compris les Value Objects et les Aggregates en Domain-Driven Design (DDD), en simulant des interactions réalistes sans la complexité de gérer les données sous-jacentes
.
L'article explique pourquoi il est préférable d'utiliser des objets de transfert de données (DTO) avec les formulaires Symfony plutôt que des entités. Bien que l'utilisation directe des entités dans les formulaires soit simple et efficace pour des opérations CRUD basiques, elle peut devenir complexe et problématique pour des cas d'utilisation plus avancés.
L'auteur illustre cela avec un exemple où un formulaire d'édition d'utilisateur doit gérer des champs d'adresse conditionnels. Utiliser directement les entités nécessite des ajustements complexes, comme des transformateurs de données, et peut mener à des états incohérents des entités.
En revanche, l'utilisation de DTOs permet de séparer clairement les données du formulaire de la logique métier, rendant le code plus maintenable et compréhensible. Les DTOs représentent exactement les données du formulaire, évitant ainsi de modifier les entités pour s'adapter aux besoins du formulaire.
Bien que cela nécessite un peu plus de code pour mapper les données entre les DTOs et les entités, cette approche est plus flexible et évite les inconvénients liés à l'utilisation directe des entités dans les formulaires
L'auteur explique brièvement ce qu'est OAuth2, puis détaille par étape comment l'implémenter dans Symfony.
L'article explore l'utilisation du pattern ADR (Action-Domain-Responder) dans Symfony, en remplacement du traditionnel MVC (Model-View-Controller). L'auteur présente une approche où chaque contrôleur, nommé avec le suffixe "Action", est responsable d'une seule tâche, utilisant la méthode __invoke()
pour simplifier le routage et le rendu des templates. Cette méthode, bien que complexe à mettre en place, offre une organisation claire et une génération d'URLs simplifiée dans Twig.
L'auteur montre comment il a mis en place son système de recommandation à partir des statistiques de visite de son site - le tout basé sur Symfony
L'auteur montre, avec un exemple simple, comment utiliser Symfony Messenger pour découpler son code (traitement de statistiques de navigation)
Une belle déclaration d'amour au client HTTP de Symfony :-) Plus sérieusement, l'auteur montre comment s'en servir et quelques cas très intéressants comme des requêtes asynchrones
L'auteur explique à quoi servent les DTOs et comment les utiliser dans le contexte d'une application Symfony en particulier.
L'auteur montre comment créer des règles métier personnalisées avec le Validator de Symfony
L'auteur montre comment se prémunir des attaques XSS dans Symfony : pour les templates Twig en les échappant systématiquement, pour les entrées utilisateur en les "sanitizant" et en utilisant une politique de sécurité de contenu (CSP)
sensio/framework-extra-bundle est déprécié et est remplacé par l'attribut natif de Symfony : #[IsGranted()]
L'auteur montre l'utilisation de Rector en plusieurs étapes pour faire la migration.
L'auteur se place dans le contexte d'une application Symfony avec des tests PHPUnit et en fournissant des jeux de données via Foundry. Il montre l'utilisation du trait ClockAwareTrait et composant Clock. Enfin, il rappelle que PHP-FIG a proposé la PSR-20 Clock qui dispose de plusieurs implémentations, dont le composant Clock.
Voici la liste des conférences présentées lors du SymfonyLive Paris 2025, avec un résumé pour chacune :
-
Keynote de Fabien Potencier :
- Fabien a retracé l'histoire de l'initiative DX de Symfony et a démontré la flexibilité de Symfony avec des exemples comme "Symfony Hello" et "Symfony Solo".
-
Le composant Symfony Mapper – Antoine Bluchet :
- Présentation du nouveau composant ObjectMapper de Symfony, qui facilite la transformation de données entre différentes structures dans les applications Symfony.
-
API Platform sans Doctrine – Jérôme Tamarelle :
- Jérôme a montré comment optimiser les performances d'API Platform en utilisant des fonctionnalités JSON de PostgreSQL pour réduire le nombre de requêtes SQL.
-
Développer avec API Platform 4 – Mathias Arlaud :
- Mathias a expliqué les évolutions d'API Platform, notamment l'utilisation de DTO et la découplage du modèle de données en base et la représentation en API.
-
Passkeys pour une authentification fluide et sécurisée – Rémi Janot :
- Rémi a présenté WebAuthn, une API permettant l'authentification sans mot de passe traditionnel, en utilisant des authentificateurs comme les lecteurs d'empreintes digitales.
-
Rôles & permissions : développer une marque blanche avec du feature flipping – Florian Bogey :
- Florian a détaillé l'utilisation des rôles et permissions dans Symfony pour gérer une application multi-clients en marque blanche, avec un système de feature flipping.
-
Symfony UX : Points forts de 2024 et perspectives d’avenir – Simon André :
- Simon a analysé l'adoption des composants UX par la communauté Symfony et a présenté les futures améliorations et changements.
-
Atteindre la qualité d’une SPA avec HTMX et Twig – Damien Alexandre :
- Damien a montré comment utiliser HTMX pour créer des applications web dynamiques et réactives sans trop de JavaScript, en utilisant des attributs dans Twig.
-
Développer plus vite avec FrankenPHP – Kévin Dunglas :
- Kévin a présenté FrankenPHP, une combinaison performante d'un runtime PHP, d'un serveur Web et d'un serveur SSE, pour améliorer les performances de développement.
-
Asynchrone avec Symfony Messenger et Mercure – Grégoire Pineau :
- Grégoire a expliqué comment combiner Symfony Messenger et Mercure pour des traitements asynchrones et des notifications en temps réel, améliorant ainsi la performance et l'expérience utilisateur.
-
Du Lego de composants pour un bundle Gotenberg – Hubert Lenoir, Adrien Roches :
- Les conférenciers ont présenté l'utilisation de Gotenberg pour la génération de PDF et ont mis en lumière des fonctionnalités avancées de PHP et Symfony.
-
Tirez profit de Messenger pour améliorer votre architecture – Tugdual Saunier :
- Tugdual a montré comment utiliser le composant Messenger en synchrone pour améliorer l'architecture d'une application, en utilisant des messages pour faire circuler des appels à des services.
-
Keynote – Nicolas Grekas :
- Nicolas a présenté les nouvelles fonctionnalités à venir dans Symfony, notamment dans les versions 7.4 (LTS) et 8, comme le support de HTTP/3 dans le HttpClient.
Ces conférences ont couvert divers aspects de Symfony, de l'amélioration des performances à l'optimisation de l'architecture, en passant par la sécurité et les nouvelles fonctionnalités.
L'article explique comment transformer des blocs de code if-else
en utilisant le patron Strategy avec Symfony pour éviter un code complexe et difficile à maintenir. L'auteur montre comment séparer les implémentations dans des classes distinctes et utiliser le conteneur de services de Symfony pour gérer les dépendances de manière efficace. Le résultat est un code plus propre et facile à lire, utilisant des expressions match
pour mapper les types d'actifs aux classes API appropriées.
Ce dépôt contient des liens vers l'ensemble des diapositives des présentations du SymfonyLive Paris 2025
Le deuxième jour du SymfonyLive Paris 2025 a abordé divers sujets : Laura Durieux a souligné les contributions des femmes dans l'histoire de la technologie. Grégoire Pineau a présenté Symfony Messenger et son intégration avec Mercure pour des retours en temps réel. Damien Alexandre a exploré l'utilisation d'HTMX pour améliorer les performances des applications web. Hubert Lenoir et Adrien Roches ont introduit Gotenberg, un outil de génération de PDF fiable. Tugdual Saunier a montré comment Symfony Messenger peut améliorer l'architecture des applications. Matthias Arlaud a détaillé les évolutions d'API Platform, notamment l'adoption des attributs. Enfin, Nicolas Grekas a présenté les nouvelles fonctionnalités de Symfony 7.3, incluant des améliorations dans plusieurs composants. L'événement a célébré les 20 ans de Symfony et mis en avant les contributions de la communauté.