L'article explore l'automatisation de la génération de métadonnées SEO à l'aide de l'intelligence artificielle, un processus qui permet d'analyser rapidement le contenu et de créer des titres, descriptions et mots-clés optimisés pour le référencement. Le système, construit sur Symfony, intègre plusieurs composants clés, dont un bundle pour interagir avec des modèles de langage, un système d'événements pour déclencher la génération SEO, et un mécanisme de suivi des coûts pour gérer les dépenses liées aux appels d'API. La configuration du bundle LLM Chain permet de communiquer avec des modèles comme OpenAI, en définissant des paramètres tels que la plateforme, le modèle et un prompt système pour guider la génération de métadonnées. Le cœur du système est le générateur de SEO, qui transforme les réponses de l'IA en métadonnées structurées, tout en vérifiant les limites budgétaires et en enregistrant l'utilisation de l'API pour un suivi précis des coûts. En conclusion, l'article souligne les avantages du système, qui permet de gagner du temps tout en maintenant une qualité de SEO élevée, et offre des conseils pour implémenter un système similaire, en commençant par l'installation du bundle php-llm/llm-chain-bundle et la configuration de l'accès à l'API OpenAI.
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.
DarkChyper explique comment utiliser Symfony/Validator pour gérer des règles de validation dynamiques et fonctionnelles, notamment dans un contexte où les contraintes doivent être paramétrables par les utilisateurs (exemple : gestion de salles de répétition pour MusicBox). L’article détaille la création de contraintes personnalisées, l’utilisation du patron Bridge pour séparer abstraction et implémentation, et l’intégration avec une base de données pour stocker les paramètres. Il montre comment étendre le système de validation de Symfony pour permettre aux administrateurs de configurer des règles (délais, limites périodiques, etc.) via une interface, tout en gardant une architecture flexible et maintenable. Le code source et une démo sont disponibles pour illustrer la mise en œuvre. Une approche intéressante pour adapter les validations aux besoins métiers spécifiques sans modifier le code source.
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