PHP framework Symfony - PHP8+ et Symfony 7+
Formation créée le 03/04/2026.
Version du programme : 1
Version du programme : 1
Type de formation
PrésentielDurée de formation
28 heures (4 jours)
Cette formation est gratuite.
S'inscrire
Cette formation est gratuite.
S'inscrire
Cette formation est gratuite.
S'inscrire
PHP framework Symfony - PHP8+ et Symfony 7+
Maîtriser le framework Symfony 7, Doctrine ORM, la sécurité et les API REST avec PHP 8+
Objectifs de la formation
- Créer et configurer un projet Symfony 7 avec PHP 8.3 et Composer
- Définir des routes et des contrôleurs avec les attributs PHP 8 natifs
- Construire des templates dynamiques avec le moteur de rendu Twig
- Concevoir un modèle de données avec Doctrine ORM et gérer les migrations
- Implémenter les relations entre entités (OneToMany, ManyToMany) avec Doctrine
- Construire et valider des formulaires Symfony avec les contraintes de validation
- Mettre en place l'authentification et l'autorisation avec le composant Security
- Sécuriser une API REST avec des tokens JWT via LexikJWTAuthenticationBundle
- Exposer des ressources via API Platform 3 et personnaliser les endpoints
- Injecter des services avec le conteneur de dépendances et l'autowiring Symfony
- Écrire des tests unitaires et fonctionnels avec PHPUnit et le client de test Symfony
- Appliquer les bonnes pratiques officielles Symfony sur un projet complet
Profil des bénéficiaires
Pour qui
- Développeurs PHP souhaitant adopter Symfony 7 comme framework principal pour des projets web professionnels.
Prérequis
- Maîtrise de PHP orienté objet (classes, interfaces, namespaces, traits).
- Connaissances de base en HTML, SQL et utilisation du terminal.
- Notions de Composer appréciées.
Contenu de la formation
Jour 1 matin — Installation, architecture et premiers contrôleurs
- Présentation de Symfony 7 : philosophie, composants, LTS vs version courante, écosystème Flex
- Nouveautés PHP 8.1/8.2/8.3 utiles dans Symfony : enums, readonly properties, fibers, attributs natifs, intersection types
- Installation d'un projet Symfony 7 avec Composer et symfony CLI, structure des répertoires
- Le noyau Symfony : HttpKernel, Request/Response, cycle de vie d'une requête
- Environnements (dev/prod/test), variables d'environnement avec .env, configuration YAML
- Web Profiler et Symfony Debugger : utilisation en développement
- Routing avec attributs PHP 8 : #[Route], paramètres, requirements, valeurs par défaut, nommage
- Contrôleurs : AbstractController, méthodes render(), json(), redirectToRoute()
- TP : création du projet fil rouge (plateforme de gestion de conférences), configuration de l'environnement, premiers contrôleurs avec routing par attributs, exploration du Profiler
Jour 1 après-midi — Twig, services et injection de dépendances
- Twig 3 : syntaxe de base, variables, filtres, fonctions, structures de contrôle
- Héritage de templates : block, extends, include, embed — organisation d'un layout
- Assets avec AssetMapper (Symfony 7) : gestion des fichiers CSS/JS sans Webpack
- Le conteneur de services Symfony : services privés vs publics, autowiring, autoconfiguration
- Injection de dépendances : constructeur, attribut #[Autowire], tags de services
- Création d'un service métier personnalisé et injection dans un contrôleur
- Sessions, cookies, messages flash : gestion dans les contrôleurs et l'affichage Twig
- TP : construction du layout Twig du projet fil rouge (header, footer, navigation), création d'un service ConferenceRepository factice, affichage d'une liste de conférences avec héritage de templates et messages flash
Jour 2 matin — Doctrine ORM : entités, migrations et requêtes
- Doctrine ORM dans Symfony 7 : configuration, connexion à la base de données (MySQL/PostgreSQL)
- Entités et mapping : création avec make:entity, annotations vs attributs PHP 8 #[ORM\Entity]
- Types de colonnes, clés primaires, colonnes auto-générées
- Migrations : make:migration, doctrine:migrations:migrate, gestion du schéma en équipe
- EntityManager : persist(), flush(), remove() — cycle de vie des entités
- Repositories : méthodes par défaut (find, findAll, findBy, findOneBy), requêtes DQL personnalisées, QueryBuilder
- DataFixtures : chargement de données de test avec DoctrineFixturesBundle et Faker
- TP : création des entités Conference, Speaker et Comment du projet fil rouge avec leurs mappings, génération et exécution des migrations, chargement de fixtures avec données réalistes, affichage dynamique depuis la base de données
Jour 2 après-midi — Relations Doctrine et formulaires
- Relations entre entités : OneToMany, ManyToOne, ManyToMany, OneToOne — configuration et cascade
- Chargement LAZY vs EAGER : impact sur les performances, résolution du problème N+1
- Formulaires Symfony : FormType, champs, options, rendu Twig avec form_row/form_widget
- Validation : contraintes (#[Assert\NotBlank], #[Assert\Email], #[Assert\Length]…), groupes de validation
- Gestion des fichiers uploadés : VichUploaderBundle, stockage et affichage
- CSRF protection dans les formulaires Symfony
- TP : ajout des relations entre Conference, Speaker et Comment dans le projet fil rouge, création des FormType ConferenceType et CommentType avec validation, formulaire d'ajout de commentaire avec upload d'image, affichage des erreurs de validation en Twig
Jour 3 matin — Sécurité : authentification et autorisation
- Composant Security Symfony 7 : firewalls, providers, authenticators
- Création d'un utilisateur avec make:user, UserInterface, PasswordAuthenticatedUserInterface
- Authentification par formulaire de login : make:auth, LoginFormAuthenticator
- Encodage des mots de passe : PasswordHasher, algorithmes recommandés
- Autorisation : rôles (ROLE_USER, ROLE_ADMIN), hiérarchie des rôles, is_granted() en Twig
- Contrôle d'accès par URL dans security.yaml vs attribut #[IsGranted] sur les contrôleurs
- Voters personnalisés : ConferenceVoter, logique de contrôle d'accès métier fine
- Remember me, logout, gestion des sessions sécurisées
- TP : implémentation complète de l'authentification sur le projet fil rouge, création d'un espace admin protégé par ROLE_ADMIN, voter ConferenceVoter pour l'édition d'une conférence par son créateur, protection CSRF du formulaire de login
Jour 3 après-midi — API REST avec API Platform 3 et JWT
- API Platform 3 : installation, concepts (Resource, Operation, Provider, Processor)
- Exposition d'une entité avec #[ApiResource] : opérations CRUD automatiques, formats JSON-LD/HAL/JSON
- Personnalisation des opérations : filtres (SearchFilter, RangeFilter, OrderFilter), pagination, groupes de sérialisation
- Sécurité des endpoints API : #[Security] sur les opérations, accès par rôle
- JWT avec LexikJWTAuthenticationBundle : génération de clés, endpoint /api/login_check, cycle token
- State Providers et State Processors personnalisés : logique métier dans l'API
- Documentation automatique OpenAPI/Swagger avec API Platform
- TP : exposition des ressources Conference et Comment via API Platform sur le projet fil rouge, configuration des groupes de sérialisation, ajout de filtres de recherche, sécurisation des endpoints POST/PUT/DELETE avec JWT, test des endpoints via Swagger U
Jour 4 matin — Composants avancés : Messenger, Events et Cache
- Messenger Component : bus de messages, handlers, transports (synchrone, Doctrine, Redis)
- Cas d'usage : traitement asynchrone d'envoi d'email, modération de commentaires
- Mailer Component : configuration SMTP/DSN, création d'emails HTML avec Twig, pièces jointes
- Event Dispatcher : événements Symfony natifs, création d'un Event et d'un EventListener/EventSubscriber
- Cache Component : PSR-6/PSR-16, adaptateurs (filesystem, Redis, Memcached), invalidation
- HTTP Cache : en-têtes Cache-Control, ESI, Varnish (évocation)
- Commandes console personnalisées : make:command, SymfonyStyle, planification avec cron
- TP : mise en place d'un handler Messenger pour la modération asynchrone des commentaires du projet fil rouge, envoi d'email de notification avec Mailer + Twig, création d'un EventSubscriber sur la création d'une conférence, commande console de nettoyage des commentaires rejetés
Jour 4 après-midi — Tests, bonnes pratiques et mise en production
- Tests unitaires avec PHPUnit dans Symfony : configuration, conventions, mocks
- Tests fonctionnels avec le client de test Symfony : simulation de requêtes HTTP, assertions sur la réponse
- Tests d'API avec ApiTestCase d'API Platform : vérification des endpoints JSON
- WebTestCase vs KernelTestCase : quand utiliser lequel
- Bonnes pratiques officielles Symfony : structure des répertoires, nommage, séparation des responsabilités
- Déploiement en production : variables d'environnement, APP_ENV=prod, cache:warmup, optimisation autoloader Composer
- Docker pour Symfony : Dockerfile, docker-compose avec PHP-FPM, Nginx, PostgreSQL
- Outils de qualité : PHP CS Fixer, PHPStan niveau 8, Rector pour les migrations de version
- TP : écriture de tests unitaires pour le service de modération, tests fonctionnels des pages publiques et de l'espace admin du projet fil rouge, test de l'endpoint API Conference, configuration d'un docker-compose complet pour le projet, analyse statique avec PHPStan
- Synthèse : récapitulatif du projet fil rouge end-to-end, ressources pour progresser (documentation officielle Symfony, SymfonyCasts, Forum PHP)
Équipe pédagogique
Professionnel expert technique et pédagogique.