Cas pratiques Symfony

30 cas pratiques Symfony disponibles. Niveaux : fondamental (10), avancé (10), expert (10).

Fait partie de : Cas pratiques de PHP et Ruby

FondamentalSymfony

Configuration basique de sécurité avec authentification form login

Contexte : Une application doit protéger certaines routes. Le Problème : Aucun système d'authentification n'est configuré. Contraintes : Utiliser le composant Security avec form_login. Livrable attendu : Mettre en place une authentification simple permettant de protéger une route nécessitant un utilisateur connecté.

symfonysecurityauthentication+1
FondamentalSymfony

Configuration correcte des variables d'environnement

Contexte : Les informations sensibles sont codées en dur dans les fichiers de configuration. Le Problème : L'application n'est pas prête pour différents environnements. Contraintes : Utiliser le fichier .env. Livrable attendu : Configurer correctement les variables d'environnement pour la base de données et vérifier leur utilisation dans config/packages/doctrine.yaml.

symfonyenvironmentconfig+1
FondamentalSymfony

Correction d'une erreur de route non trouvée

Contexte : Une URL retourne une erreur 404 malgré la présence d'un contrôleur. Le Problème : La route n'est pas correctement déclarée ou le namespace est incorrect. Contraintes : Vérifier configuration des routes et annotations. Livrable attendu : Corriger la déclaration de route afin qu'elle corresponde correctement à l'URL demandée.

symfonyroutingdebugging+1
FondamentalSymfony

Correction d'une erreur de service non injecté

Contexte : Un contrôleur utilise un service personnalisé mais déclenche une erreur. Le Problème : Le service n'est pas correctement injecté. Contraintes : Utiliser l'injection via constructeur. Livrable attendu : Corriger le contrôleur pour injecter correctement le service et supprimer l'erreur.

symfonyservicesdependencyinjection+1
FondamentalSymfony

Création d'un contrôleur Symfony avec route fonctionnelle

Contexte : Vous démarrez un nouveau projet Symfony et devez exposer un endpoint simple pour valider l'installation. Le Problème : Aucun contrôleur personnalisé n'est encore configuré. Contraintes : Utiliser les annotations ou attributs PHP pour définir la route. Ne pas placer la logique directement dans le fichier routes.yaml. Livrable attendu : Créer un contrôleur avec une route GET /health retournant une réponse JSON { "status": "ok" } avec code HTTP 200.

symfonycontrollerrouting+1
FondamentalSymfony

Création d'une entité Doctrine avec migration

Contexte : Une application doit stocker des produits en base de données. Le Problème : Aucune entité ni table correspondante n'existe. Contraintes : Utiliser make:entity et générer une migration. Livrable attendu : Créer une entité Product avec au moins deux propriétés, générer et exécuter la migration pour créer la table correspondante.

symfonydoctrineentity+1
FondamentalSymfony

Création d'une vue Twig avec données dynamiques

Contexte : Une page HTML doit afficher dynamiquement des données envoyées par le contrôleur. Le Problème : Aucun template Twig n'est configuré. Contraintes : Utiliser Twig pour le rendu. Livrable attendu : Créer un template Twig affichant une variable dynamique passée depuis le contrôleur.

symfonytwigview+1
FondamentalSymfony

Implémentation d'un formulaire Symfony simple

Contexte : Une application doit permettre la création d'un nouvel objet via formulaire. Le Problème : Aucun formulaire n'est encore défini. Contraintes : Utiliser le composant Form de Symfony. Livrable attendu : Créer un formulaire lié à une entité et gérer la soumission avec validation basique.

symfonyformvalidation+1
FondamentalSymfony

Implémentation d'une relation One-to-Many avec Doctrine

Contexte : Une application doit relier des catégories à plusieurs produits. Le Problème : Les relations ne sont pas définies dans les entités. Contraintes : Définir correctement les annotations ou attributs Doctrine. Livrable attendu : Implémenter la relation One-to-Many entre Category et Product et vérifier la persistance correcte en base.

symfonydoctrinerelations+1
FondamentalSymfony

Implémentation d'une validation simple avec Validator

Contexte : Une entité accepte des données sans validation. Le Problème : Des données invalides peuvent être persistées. Contraintes : Utiliser les contraintes du composant Validator. Livrable attendu : Ajouter des contraintes de validation sur une entité et afficher les erreurs dans le formulaire.

symfonyvalidationentity+1
AvancéSymfony

Configuration sécurisée pour environnement production

Contexte : L'application doit être déployée en production. Le Problème : Certaines configurations sensibles sont exposées ou mal paramétrées. Contraintes : Configurer correctement APP_ENV, debug et variables d'environnement. Livrable attendu : Adapter la configuration pour un environnement production sécurisé et prêt au déploiement.

symfonyproductionsecurity+2
AvancéSymfony

Gestion centralisée des exceptions API

Contexte : Les erreurs API sont retournées avec des formats incohérents. Le Problème : Aucun gestionnaire global d'exception JSON n'est configuré. Contraintes : Créer un EventSubscriber ou ExceptionListener personnalisé. Livrable attendu : Mettre en place une gestion centralisée garantissant un format JSON uniforme pour toutes les erreurs API.

symfonyexceptionsapi+2
AvancéSymfony

Implémentation d'un système d'événements personnalisés pour logique métier

Contexte : Certaines actions métier doivent déclencher des traitements secondaires. Le Problème : La logique est dupliquée dans plusieurs contrôleurs. Contraintes : Utiliser EventDispatcher et EventSubscriber. Livrable attendu : Mettre en place un système d'événements permettant de déclencher automatiquement des actions métier après certaines opérations.

symfonyeventsarchitecture+2
AvancéSymfony

Implémentation d'un système de rôles et permissions avancées

Contexte : Une application multi-utilisateurs doit restreindre certaines actions selon le rôle. Le Problème : Les contrôles d'accès sont gérés manuellement dans les contrôleurs. Contraintes : Utiliser Voters ou Access Control. Livrable attendu : Mettre en place un système d'autorisation basé sur Voters permettant de contrôler dynamiquement l'accès aux ressources.

symfonysecurityvoter+2
AvancéSymfony

Implémentation d'un upload sécurisé avec validation et stockage contrôlé

Contexte : Les utilisateurs doivent pouvoir téléverser des fichiers. Le Problème : Aucun contrôle strict n'est appliqué sur le type ou la taille. Contraintes : Utiliser le composant Validator et gérer le stockage sécurisé. Livrable attendu : Mettre en place un système d'upload sécurisé validant type MIME, taille maximale et stockage approprié.

symfonyuploadvalidation+2
AvancéSymfony

Implémentation d'une authentification JWT sécurisée

Contexte : Une API Symfony doit sécuriser certains endpoints accessibles uniquement aux utilisateurs authentifiés. Le Problème : Aucun mécanisme d'authentification par token n'est configuré. Contraintes : Utiliser LexikJWTAuthenticationBundle ou équivalent. Livrable attendu : Mettre en place une authentification JWT complète avec génération de token, firewall configuré et protection des routes sensibles.

symfonyjwtsecurity+2
AvancéSymfony

Implémentation d'une pagination optimisée avec Doctrine

Contexte : Une API retourne de grandes listes d'entités. Le Problème : Toutes les données sont envoyées en une seule réponse. Contraintes : Utiliser Paginator de Doctrine. Livrable attendu : Mettre en place une pagination efficace limitant le nombre d'éléments retournés et améliorant la performance.

symfonypaginationdoctrine+2
AvancéSymfony

Mise en place d'un cache HTTP ou applicatif avec Symfony Cache

Contexte : Certaines pages ou endpoints sont coûteux à générer. Le Problème : Les temps de réponse augmentent sous charge. Contraintes : Utiliser le composant Cache ou HTTP cache. Livrable attendu : Implémenter un mécanisme de cache avec TTL améliorant les performances sans compromettre la cohérence des données.

symfonycacheperformance+2
AvancéSymfony

Optimisation des requêtes Doctrine pour éviter le N+1 problem

Contexte : Une page liste des entités avec relations associées. Le Problème : Les performances sont dégradées à cause de requêtes répétées. Contraintes : Utiliser fetch join ou QueryBuilder avec jointures optimisées. Livrable attendu : Refactoriser les requêtes afin de réduire le nombre de requêtes SQL générées et améliorer les performances globales.

symfonydoctrineperformance+2
AvancéSymfony

Structuration d'une API REST modulaire avec API Platform ou contrôleurs dédiés

Contexte : Votre application Symfony doit exposer une API REST pour un front-end SPA. Le Problème : Les contrôleurs actuels retournent principalement des vues Twig et ne suivent pas une architecture API claire. Contraintes : Mettre en place une structure modulaire avec contrôleurs API dédiés ou utiliser API Platform. Les réponses doivent être en JSON avec codes HTTP appropriés. Livrable attendu : Implémenter une ressource REST complète (CRUD) avec sérialisation contrôlée et séparation claire entre logique métier et couche HTTP.

symfonyapirest+2
ExpertSymfony

Architecture microservices avec communication événementielle

Contexte : Une application monolithique Symfony doit évoluer vers une architecture distribuée. Le Problème : Les modules sont fortement couplés et déployés ensemble. Contraintes : Utiliser un message broker (RabbitMQ ou Kafka) pour communication asynchrone entre services. Livrable attendu : Concevoir une architecture microservices découplant les domaines métier et permettant communication fiable via événements.

symfonymicroservicesrabbitmq+2
ExpertSymfony

Conception d'une architecture hexagonale scalable avec Symfony

Contexte : Votre application Symfony a évolué rapidement et mélange contrôleurs, logique métier et accès Doctrine dans les mêmes classes. Le Problème : Le couplage fort rend les tests complexes et limite l’évolutivité de l’application. Contraintes : Mettre en place une architecture hexagonale (ports & adapters) séparant clairement domaine, application et infrastructure. Le domaine ne doit dépendre ni de Symfony ni de Doctrine. Livrable attendu : Proposer une structure complète incluant entités métier, cas d’usage, interfaces de repository et implémentations concrètes garantissant testabilité et maintenabilité.

symfonyarchitecturehexagonal+2
ExpertSymfony

Implémentation d'un moteur d'autorisation dynamique multi-rôles et multi-tenant

Contexte : Une application SaaS doit gérer des rôles hiérarchiques et permissions dynamiques par organisation. Le Problème : Les règles d’autorisation actuelles sont statiques et difficiles à maintenir. Contraintes : Implémenter un système RBAC ou ABAC personnalisé avec Voters et logique métier séparée. Livrable attendu : Concevoir un moteur d’autorisation flexible capable de gérer multi-tenant, rôles complexes et permissions dynamiques.

symfonyauthorizationrbac+2
ExpertSymfony

Implémentation d'un système multi-tenant sécurisé

Contexte : Une plateforme SaaS doit gérer plusieurs organisations avec isolation stricte des données. Le Problème : Les données des différents tenants sont stockées dans les mêmes tables sans filtrage systématique. Contraintes : Implémenter un système multi-tenant par champ tenant_id ou schéma dédié avec configuration dynamique. Livrable attendu : Concevoir une architecture garantissant l’isolation complète des données entre tenants et empêchant tout accès croisé non autorisé.

symfonymultitenantsecurity+2
ExpertSymfony

Implémentation d'un système transactionnel distribué avec gestion des compensations

Contexte : Plusieurs services doivent effectuer des opérations coordonnées sur différentes bases de données. Le Problème : En cas d’échec intermédiaire, l’état global devient incohérent. Contraintes : Implémenter un pattern Saga ou mécanisme de compensation. Livrable attendu : Concevoir une stratégie garantissant cohérence globale via transactions distribuées et mécanismes de rollback compensatoire.

symfonytransactionssaga+2
ExpertSymfony

Implémentation d'une authentification avancée avec refresh token rotatif

Contexte : Une API Symfony doit gérer des sessions longue durée de manière sécurisée. Le Problème : Les tokens actuels ne permettent pas une rotation sécurisée ni révocation fine. Contraintes : Mettre en place access token court et refresh token stocké en base avec rotation automatique et blacklist. Livrable attendu : Concevoir un système complet incluant génération, rotation, révocation et sécurisation des refresh tokens conformément aux bonnes pratiques.

symfonyjwtsecurity+2
ExpertSymfony

Mise en place d'un système d'observabilité et monitoring avancé

Contexte : L’application est déployée sur plusieurs instances en production. Le Problème : Les erreurs et lenteurs sont difficiles à diagnostiquer. Contraintes : Intégrer logs structurés, métriques et tracing distribué (OpenTelemetry ou équivalent). Livrable attendu : Mettre en place une architecture d’observabilité complète facilitant analyse des performances et détection d’anomalies.

symfonymonitoringobservability+2
ExpertSymfony

Optimisation avancée des performances avec cache distribué Redis

Contexte : Certains endpoints critiques subissent une forte charge. Le Problème : Les requêtes Doctrine deviennent un goulot d’étranglement. Contraintes : Intégrer Redis comme backend de cache avec stratégie d’invalidation fine. Livrable attendu : Mettre en place un système de cache distribué performant garantissant cohérence des données et amélioration significative de la latence.

symfonyrediscache+2
ExpertSymfony

Refonte cloud-native pour scalabilité horizontale et haute disponibilité

Contexte : L’application doit être déployée dans un environnement cloud avec autoscaling. Le Problème : L’architecture actuelle dépend d’états locaux et n’est pas optimisée pour la scalabilité horizontale. Contraintes : Rendre l’application stateless, externaliser sessions, cache et stockage. Livrable attendu : Proposer une architecture cloud-native compatible Docker et orchestrateurs, garantissant scalabilité horizontale et haute disponibilité.

symfonyclouddocker+2
ExpertSymfony

Sécurisation avancée conforme aux standards OWASP

Contexte : Une API Symfony est exposée publiquement et doit respecter des standards élevés de sécurité. Le Problème : Certaines protections contre injection, XSS ou brute force sont insuffisantes. Contraintes : Mettre en place validation stricte, rate limiting, sécurisation headers et configuration firewall avancée. Livrable attendu : Concevoir une stratégie complète de sécurisation alignée avec les recommandations OWASP.

symfonysecurityowasp+2

Questions originales conçues par CodeDuel. CodeDuel n'est affilié à aucun éditeur ni organisme de certification cité ; les noms de certifications et les marques appartiennent à leurs titulaires et servent uniquement à indiquer le domaine couvert. Signaler un contenu

    Cas pratiques Symfony : 30 mises en situation | CodeDuel