En route pour Symfony 5 Fabien Potencier https://fabien.potencier.org/ @fabpot
En route pour Symfony 5 Fabien Potencier https://fabien.potencier.org/ @fabpot @fabpot En route pour Symfony 5 ISBN-13: 978-2-918390-38-1 v1.0.6 — Generated on February 10, 2020 Symfony SAS 92-98, boulevard Victor Hugo 92 110 Clichy France This work is licensed under the Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)” license (https://creativecommons.org/licenses/by-nc-sa/4.0/). Below is a human-readable summary of (and not a substitute for) the license (https://creativecommons.org/ licenses/by-nc-sa/4.0/legalcode). You are free to Share — copy and redistribute the material in any medium or format Adapt — remix, transform, and build upon the material • Attribution: You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. • Non Commercial: You may not use the material for commercial purposes. • Share Alike: If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Symfony shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. If you find typos or errors, feel free to report them at support@symfony.com. This book is continuously updated based on user feedback. Aperçu du contenu Étape 0: Pourquoi ce livre ? .............................................................................27 Étape 1: Votre environnement de travail...........................................................31 Étape 2: Présentation du projet........................................................................37 Étape 3: De zéro à la production......................................................................43 Étape 4: Adopter une méthodologie..................................................................51 Étape 5: Diagnostiquer les problèmes ...............................................................53 Étape 6: Créer un contrôleur ...........................................................................61 Étape 7: Mettre en place une base de données ...................................................69 Étape 8: Décrire la structure des données..........................................................77 Étape 9: Configurer une interface d’administration ...........................................91 Étape 10: Construire l’interface .......................................................................99 Étape 11: Utiliser des branches ......................................................................113 Étape 12: Écouter les événements...................................................................121 Étape 13: Gérer le cycle de vie des objets Doctrine...........................................127 Étape 14: Accepter des commentaires avec les formulaires ...............................137 Étape 15: Sécuriser l’interface d’administration...............................................153 Étape 16: Empêcher le spam avec une API......................................................161 Étape 17: Tester ...........................................................................................169 Étape 18: Faire de l’asynchrone .....................................................................187 Étape 19: Prendre des décisions avec un workflow...........................................205 Étape 20: Envoyer des emails aux admins.......................................................211 Étape 21: Mettre en cache pour la performance...............................................225 Étape 22: Styliser l’interface avec Webpack ....................................................241 Étape 23: Redimensionner des images ............................................................247 Étape 24: Exécuter des crons .........................................................................253 Étape 25: Notifier à tout prix.........................................................................259 Étape 26: Exposer une API avec API Platform................................................275 v Étape 27: Créer une SPA (Single Page Application) .........................................285 Étape 28: Localiser une application................................................................303 Étape 29: Gérer les performances...................................................................317 Étape 30: Voyager au cœur de Symfony .........................................................327 Étape 31: Quelle est la prochaine étape ? ........................................................333 vi Table des matières Étape 0: Pourquoi ce livre ? .............................................................................27 Étape 1: Votre environnement de travail...........................................................31 1.1: Un ordinateur ......................................................................................31 1.2: Choix arbitraires..................................................................................32 1.3: IDE .....................................................................................................32 1.4: Terminal..............................................................................................32 1.5: Git ......................................................................................................33 1.6: PHP ....................................................................................................33 1.7: Composer ............................................................................................33 1.8: Docker et Docker Compose...................................................................34 1.9: Symfony CLI........................................................................................34 Étape 2: Présentation du projet........................................................................37 2.1: Description du projet ............................................................................37 2.2: La maîtrise s’acquiert par la pratique.....................................................38 2.3: À propos du diagramme de l’infrastructure finale....................................38 2.4: Récupérer le code source du projet .........................................................40 2.5: Parcourir le code source........................................................................41 Étape 3: De zéro à la production......................................................................43 3.1: Initialiser le projet ................................................................................44 3.2: Créer des ressources publiques...............................................................45 3.3: Lancer un serveur web local ..................................................................46 3.4: Ajouter une favicon ..............................................................................47 3.5: Se préparer pour la production ..............................................................47 3.6: Mise en production ...............................................................................48 ix Étape 4: Adopter une méthodologie..................................................................51 4.1: Mettre en place une stratégie Git............................................................51 4.2: Déploiement continu en production........................................................52 Étape 5: Diagnostiquer les problèmes ...............................................................53 5.1: Installer des dépendances supplémentaires..............................................53 5.2: Comprendre les environnements Symfony ..............................................54 5.3: Gérer la configuration des environnements.............................................55 5.4: Enregistrer tout dans les logs .................................................................56 5.5: Découvrir les outils de débogage de Symfony ..........................................56 5.6: Configurer votre IDE............................................................................59 5.7: Déboguer en production........................................................................60 Étape 6: Créer un contrôleur ...........................................................................61 6.1: Se faciliter la vie avec le Maker Bundle...................................................61 6.2: Choisir un format de configuration ........................................................62 6.3: Générer un contrôleur...........................................................................63 6.4: Ajouter un easter egg ............................................................................65 Étape 7: Mettre en place une base de données ...................................................69 7.1: Ajouter PostgreSQL à Docker Compose .................................................69 7.2: Démarrer Docker Compose...................................................................70 7.3: Accéder à la base de données locale........................................................71 7.4: Ajouter PostgreSQL à SymfonyCloud.....................................................71 7.5: Accéder à la base de données de SymfonyCloud ......................................73 7.6: Exposer des variables d’environnement ..................................................74 Étape 8: Décrire la structure des données..........................................................77 8.1: Configurer Doctrine ORM ....................................................................77 8.2: Comprendre les conventions des variables d’environnement de Symfony...78 8.3: Modifier la valeur par défaut de DATABASE_URL dans le fichier .env ....79 8.4: Créer des classes d’entités......................................................................79 8.5: Lier les entités ......................................................................................83 8.6: Ajouter d’autres propriétés ....................................................................87 8.7: Migrer la base de données .....................................................................87 x 8.8: Mettre à jour la base de données locale...................................................88 8.9: Mettre à jour la base de données de production .......................................89 Étape 9: Configurer une interface d’administration ...........................................91 9.1: Configurer EasyAdmin .........................................................................91 9.2: Personnaliser EasyAdmin......................................................................96 Étape 10: Construire l’interface .......................................................................99 10.1: Installer Twig.....................................................................................99 10.2: Utiliser Twig pour les templates.........................................................100 10.3: Utiliser Twig dans un contrôleur........................................................101 10.4: Créer la page d’une conférence ..........................................................103 10.5: Lier des pages entre elles ...................................................................105 10.6: Paginer les commentaires ..................................................................106 10.7: Optimiser le contrôleur .....................................................................110 Étape 11: Utiliser des branches ......................................................................113 11.1: Adopter un workflow Git ..................................................................114 11.2: Décrire votre infrastructure...............................................................114 11.3: Créer des branches............................................................................114 11.4: Stocker les sessions dans Redis...........................................................114 11.5: Déployer une branche.......................................................................116 11.6: Déboguer les déploiements en production avant de déployer.................118 11.7: Tester les déploiements en production avant de déployer......................119 11.8: Merger en production........................................................................119 11.9: Faire le ménage ................................................................................119 Étape 12: Écouter les événements...................................................................121 12.1: Ajouter un en-tête au site web............................................................121 12.2: Découvrir les événements Symfony ....................................................123 12.3: Implémenter un subscriber ................................................................123 12.4: Trier les conférences par année et par ville..........................................125 Étape 13: Gérer le cycle de vie des objets Doctrine...........................................127 13.1: Définir des lifecycle callbacks ............................................................127 13.2: Ajouter des slugs aux conférences.......................................................128 xi 13.3: Générer des slugs..............................................................................130 13.4: Définir un lifecycle callback complexe................................................131 13.5: Configurer un service dans le conteneur..............................................132 13.6: Utiliser des slugs dans l’application ....................................................134 Étape 14: Accepter des commentaires avec les formulaires ...............................137 14.1: Générer un form type........................................................................137 14.2: Afficher un formulaire ......................................................................139 14.3: Personnaliser un form type................................................................141 14.4: Valider des modèles ..........................................................................142 14.5: Gérer un formulaire..........................................................................144 14.6: Uploader des fichiers.........................................................................146 14.7: Déboguer des formulaires..................................................................148 14.8: Afficher les photos uploadées dans l’interface d’administration.............149 14.9: Exclure les photos uploadées de Git....................................................150 14.10: Stocker les fichiers uploadés sur les serveurs de production.................150 Étape 15: Sécuriser l’interface d’administration...............................................153 15.1: Définir une entité User......................................................................153 15.2: Générer un mot de passe pour l’admin ...............................................155 15.3: Créer un admininistrateur.................................................................156 15.4: Configurer le système d’authentification.............................................156 15.5: Ajouter les règles de contrôle d’accès ..................................................158 15.6: S’authentifier avec le formulaire de connexion ....................................159 Étape 16: Empêcher le spam avec une API......................................................161 16.1: S’inscrire sur Akismet........................................................................161 16.2: Ajouter une dépendance au composant Symfony HTTPClient ..............161 16.3: Concevoir une classe de vérification de spam ......................................162 16.4: Utiliser des variables d’environnement ...............................................163 16.5: Stocker des chaînes secrètes ...............................................................164 16.6: Identifier le spam dans les commentaires ............................................165 16.7: Gérer les chaînes secrètes en production .............................................166 Étape 17: Tester ...........................................................................................169 17.1: Écrire des tests unitaires....................................................................169 xii 17.2: Écrire des tests fonctionnels pour les contrôleurs .................................171 17.3: Définir des fixtures (données de test) ..................................................173 17.4: Charger des données de test...............................................................176 17.5: Parcourir un site web avec des tests fonctionnels .................................176 17.6: Utiliser une base de données de test....................................................177 17.7: Soumettre un formulaire dans un test fonctionnel................................178 17.8: Recharger les données de test.............................................................180 17.9: Automatiser votre workflow avec un Makefile ....................................180 17.10: Réinitialiser la base de données après chaque test ..............................181 17.11: Utiliser un vrai navigateur pour les tests fonctionnels ........................183 17.12: Exécuter des tests fonctionnels de boîte noire avec Blackfire...............184 Étape 18: Faire de l’asynchrone .....................................................................187 18.1: Marquer les commentaires ................................................................187 18.2: Comprendre Messenger.....................................................................190 18.3: Coder un gestionnaire de messages.....................................................191 18.4: Filtrer les commentaires affichés ........................................................194 18.5: Faire vraiment de l’asynchrone ..........................................................195 18.6: Ajouter RabbitMQ comme service Docker..........................................196 18.7: Redémarrer les services Docker .........................................................196 18.8: Consommer des messages..................................................................197 18.9: Explorer l’interface web de gestion de RabbitMQ................................198 18.10: Lancer des workers en arrière-plan ..................................................199 18.11: Renvoyer des messages ayant échoué................................................200 18.12: Déployer RabbitMQ .......................................................................201 18.13: Exécuter des workers sur SymfonyCloud ..........................................202 Étape 19: Prendre des décisions avec un workflow...........................................205 19.1: Décrire des workflows.......................................................................206 19.2: Utiliser un workflow.........................................................................207 Étape 20: Envoyer des emails aux admins.......................................................211 20.1: Définir un email pour l’admin ...........................................................211 20.2: Envoyer une notification par email ....................................................212 20.3: Hériter du template d’email de notification .........................................214 20.4: Générer des URLs absolues dans une commande.................................215 xiii 20.5: Lier une route à un contrôleur ...........................................................216 20.6: Utiliser un mail catcher.....................................................................218 20.7: Accéder au webmail..........................................................................219 20.8: Gérer des scripts de longue durée .......................................................221 20.9: Envoyer des emails en mode asynchrone.............................................221 20.10: Tester les emails .............................................................................222 20.11: Envoyer des emails sur SymfonyCloud .............................................222 Étape 21: Mettre en cache pour la performance...............................................225 21.1: Ajouter des en-têtes de cache HTTP ...................................................225 21.2: Activer le noyau de cache HTTP de Symfony ......................................226 21.3: Éviter des requêtes SQL avec les ESIs.................................................228 21.4: Purger le cache uploads/Ingenierie_Lourd/ fabien-potencier-en-route-pour-symfony-5.pdf
Documents similaires










-
26
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Fev 13, 2022
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 3.1848MB