• Aide
  • Eurêkoi Eurêkoi

Livre

Symfony 4 (LTS) : développez des sites web PHP structurés et performants

Résumé

Un guide expert pour installer le framework PHP Symfony, structurer et organiser les développements, créer un site web, comprendre et maîtriser son fonctionnement. Le code source des exemples est disponible en téléchargement. Version en ligne offerte. ©Electre 2021


  • Autre(s) auteur(s)
  • Éditeur(s)
  • Date
    • C 2021
  • Notes
    • La couv. porte en plus : "Informatique technique" ; "En téléchargement : code source" ; "Version en ligne offerte ! pendant 1 an"
    • La 4e de couv. indique "Sur www.editions-eni.fr : code source des exemples traités dans le livre"
    • Contient un "flashcode" permettant d'accéder à un contenu via Internet
    • LTS = Long-term support
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (533 p.) : ill. ; 21 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-409-03158-8
  • Indice
  • Quatrième de couverture
    • Symfony 4 (LTS)

      Développez des sites web PHP structurés et performants

      Ce livre sur Symfony 4 s'adresse aux développeurs, chefs de projets, architectes techniques, qui souhaitent, grâce à ce framework, structurer et organiser leurs développements PHP au sein d'un environnement de construction d'applications robuste et professionnel. La maîtrise de la programmation objet avec PHP est un prérequis indispensable pour tirer le meilleur parti de ces pages.

      Le livre couvre les principaux composants de Symfony 4, considéré aujourd'hui comme le framework PHP de référence. Il fournit les connaissances de base qui permettent non seulement de créer un site ou une application web, mais également de comprendre et maîtriser son fonctionnement en détail. Un chapitre entier est par exemple consacré à l'architecture du framework.

      Les sujets détaillés vont de l'installation de Symfony à la création de tests unitaires et fonctionnels. La gestion des formulaires, des interactions avec une base de données, des templates, de la journalisation ou même de la sécurité de l'application sont autant de thèmes exposés dans le livre.

      Le temps de chargement des pages d'un site web étant un élément crucial, un chapitre délivre les techniques et astuces pour fortement améliorer les performances d'une application.

      Les auteurs ont structuré les chapitres pour faciliter l'apprentissage de Symfony 4 et dévoilent au fil des pages des conseils, bonnes pratiques et exemples détaillés.

      Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.


  • Tables des matières
      • Symfony 4 (LTS)

      • Développez des sites web PHP structurés et performants

      • Editions Eni

      • Chapitre 1
      • Introduction
      • 1. Avant-propos23
      • 2. Public visé24
      • 3. Prérequis24
      • 4. Objectifs du livre25
      • 5. Le développement avec les frameworks26
      • 5.1 Complexité des développements et productivité26
      • 5.1.1 Productivité et qualité logicielle26
      • 5.1.2 Intégration et livraison continues27
      • 5.2 Particularité des développements en PHP27
      • 5.2.1 Contexte historique de PHP27
      • 5.2.2 Évolutions28
      • 5.3 L'apport des frameworks28
      • 5.3.1 Éviter les problèmes techniques liés à l'organisation du code29
      • 5.3.2 Définir des responsabilités29
      • 5.3.3 Ne pas réinventer la roue30
      • 5.3.4 Utiliser des modèles de conception éprouvés30
      • 6. Symfony31
      • 6.1 Historique31
      • 6.2 Gouvernance et gestion des versions32
      • 6.2.1 Les versions32
      • 6.2.2 Le cycle de « release »33
      • 6.3 Choisir sa version pour un projet35
      • Chapitre 2
      • Mise en place d'un projet Symfony
      • 1. L'outillage nécessaire37
      • 1.1 Introduction37
      • 1.2 Symfony : Un projet PHP38
      • 1.2.1 Préconisation d'installation38
      • 1.2.2 Installation sous Linux39
      • 1.2.3 Installation sous Windows41
      • 1.3 L'installeur Symfony42
      • 1.4 Composer43
      • 1.4.1 Installer Composer44
      • 1.5 Les environnements de développement pour Symfony48
      • 1.5.1 Un IDE pour Symfony !49
      • 1.5.2 PHPStorm50
      • 1.5.3 Eclipse IDE for PHP Developers52
      • 1.5.4 Visual Studio Code53
      • 1.5.5 Conclusion55
      • 2. Création d'un projet Symfony56
      • 2.1 Prérequis56
      • 2.2 Création via l'installeur Symfony56
      • 2.3 Création via Composer57
      • 2.4 Configurer son serveur web59
      • 2.4.1 Serveur web PHP59
      • 2.4.2 Apache et Nginx60
      • 3. Structure de l'application64
      • 3.1 Arborescence du projet64
      • 3.2 Règles et conventions d'organisation du projet65
      • 3.2.1 Le standard PSR-465
      • 3.2.2 Conventions de nommage66
      • 3.3 La configuration d'une application Symfony68
      • 3.3.1 Les annotations68
      • 3.3.2 Le format YAML70
      • 3.3.3 Le format XML71
      • 3.3.4 Le format PHP71
      • 3.3.5 Choisir son format de configuration72
      • Chapitre 3
      • Architecture du framework
      • 1. Le modèle de conception MVC73
      • 1.1 Définitions et responsabilités73
      • 1.1.1 La vue74
      • 1.1.2 Le modèle74
      • 1.1.3 Le contrôleur74
      • 1.2 En pratique75
      • 1.2.1 Le contrôleur frontal76
      • 1.2.2 Le routage76
      • 1.2.3 Le contrôleur et le modèle76
      • 1.2.4 La vue77
      • 1.2.5 En synthèse78
      • 2. Architecture de Symfony78
      • 2.1 Présentation78
      • 2.2 Le contrôleur frontal79
      • 2.3 Le Service Container80
      • 2.4 Le modèle MVC dans Symfony ?80
      • 2.5 L'approche par composant81
      • 3. Symfony Flex82
      • 3.1 Présentation82
      • 3.2 Fonctionnement de Symfony Flex83
      • 3.3 Les recettes Flex84
      • 3.3.1 Un exemple concret84
      • 4. Les environnements85
      • 4.1 Principe et apports85
      • 4.2 Les fichiers de configuration86
      • 4.3 Dans le contexte HTTP87
      • 4.4 Dans le contexte CLI (Command Line Interface)87
      • 5. Le chargement automatique de classes87
      • 5.1 Le standard PSR-488
      • 5.2 Mécanismes alternatifs88
      • 5.3 Application aux applications Symfony89
      • 6. La console90
      • 6.1 Présentation90
      • 6.2 Les commandes90
      • 6.2.1 Lister les commandes disponibles91
      • 6.2.2 Exécuter une commande91
      • 6.3 Les options91
      • 6.4 Les arguments92
      • 6.5 L'aide sur les commandes93
      • 6.6 Exécuter rapidement des commandes94
      • 7. Les outils pour le débogage95
      • 7.1 Le profiler Symfony95
      • 7.2 La fonction dump()97
      • Chapitre 4
      • Routage et contrôleur
      • 1. Fonctionnement du routage dans Symfony99
      • 1.1 Définition99
      • 1.2 Le répertoire public et le contrôleur frontal100
      • 1.3 Une requête, une action100
      • 2. Définition des routes101
      • 2.1 Les différents formats de définition101
      • 2.2 Les options sur la définition des routes102
      • 3. Configurer le path103
      • 3.1 Illustration par l'exemple : /hello/world103
      • 3.2 La notation du contrôleur106
      • 3.3 Importer des routes depuis d'autres fichiers107
      • 3.4 Comprendre l'ordre de chargement des routes108
      • 3.5 Préfixer les routes109
      • 3.6 Les paramètres de substitution des routes110
      • 3.7 Les restrictions sur les paramètres112
      • 3.8 Obtenir des informations sur le routage114
      • 4. Routage par nom de domaine115
      • 4.1 Prérequis115
      • 4.2 Exemple de mise en oeuvre116
      • 4.3 Explications118
      • 5. Le contrôleur119
      • 5.1 Modèle de programmation et règles119
      • 5.2 Travailler avec les services119
      • 5.3 Utiliser les paramètres de substitution120
      • 5.3.1 Paramètres de substitution des routes120
      • 5.3.2 Exemples120
      • 5.4 Travailler avec les URL122
      • 5.5 Effectuer une redirection123
      • 5.6 La délégation de requête124
      • 5.7 La gestion des erreurs et des pages d'erreurs dans les contrôleurs124
      • 5.7.1 Le contrôleur125
      • 5.7.2 La vue127
      • Chapitre 5
      • L'injection de dépendances
      • 1. Le modèle de conception IoC : Inversion Of Control131
      • 1.1 Apports dans une architecture applicative131
      • 1.2 IoC et injection de dépendances133
      • 2. L'injection de dépendances133
      • 2.1 Principes de base133
      • 2.2 Les différentes techniques d'injection de dépendances133
      • 2.2.1 L'injection de dépendances par le constructeur133
      • 2.2.2 L'injection de dépendances par setter (mutateur)134
      • 2.2.3 L'injection de dépendances par propriété135
      • 2.3 Les avantages136
      • 3. Le Service Container136
      • 3.1 Les services137
      • 3.2 Explications au travers d'un service X137
      • 4. Créer un service et configurer ses injections138
      • 4.1 Créer un service138
      • 4.2 Les différents types d'injections dans un service Symfony139
      • 4.2.1 Injection par constructeur139
      • 4.2.2 Injection par méthode139
      • 4.2.3 Injection par propriété140
      • 4.3 Injection automatique avec l'autowiring141
      • 4.4 Les services « lazy »142
      • 5. Le chargement automatique de services143
      • 5.1 La configuration143
      • 5.2 Exemple d'utilisation145
      • 6. Créer des services réutilisables et distribuables147
      • 6.1 Le concept de bundle147
      • 6.1.1 Créer un bundle147
      • 6.1.2 Arborescence du bundle148
      • 6.2 La définition de services dans un bundle148
      • 6.3 La configuration149
      • 6.3.1 Définir une arborescence151
      • 6.3.2 Les différentes étapes du traitement de la configuration152
      • 6.3.3 Récupérer la configuration validée156
      • 6.4 Les « Compiler Passes »159
      • 6.4.1 Concept159
      • 6.4.2 Les tags162
      • 6.4.3 Le Compiler Pass162
      • Chapitre 6
      • Les templates avec Twig
      • 1. Présentation et concepts165
      • 1.1 Le concept de Templating165
      • 1.2 Templating et modèle MVC165
      • 2. Twig166
      • 2.1 Présentation166
      • 2.2 Pourquoi un nouveau langage ?167
      • 2.3 Mise en pratique168
      • 2.4 Remarques sur l'utilisation169
      • 2.5 La notation des templates170
      • 2.6 Extension du système de templates171
      • 2.7 L'annotation @Template171
      • 3. Les gabarits de pages (layouts) et les blocks173
      • 3.1 La composition de pages173
      • 3.2 Définition des gabarits173
      • 3.3 Les blocks175
      • 4. Le langage Twig178
      • 4.1 Les différents types d'instructions178
      • 4.2 Manipulation des variables179
      • 4.2.1 Utilisation de variables dans les templates179
      • 4.2.2 Utilisation des variables de type tableau ou objet181
      • 4.3 Structures de contrôle et tags181
      • 4.3.1 Les conditions182
      • 4.3.2 Les boucles182
      • 4.4 Les balises Twig (tags)185
      • 4.4.1 Créer et modifier des variables185
      • 4.4.2 Twig et l'échappement186
      • 4.5 Inclure des templates189
      • 5. Les filtres et les fonctions190
      • 5.1 Présentation des filtres190
      • 5.1.1 Utilisation et syntaxe190
      • 5.2 Les principaux filtres Twig191
      • 5.2.1 Chaînes de caractères191
      • 5.2.2 Échappement192
      • 5.2.3 L'encodage193
      • 5.3 Les fonctions195
      • 5.3.1 Twig et le routage195
      • 5.3.2 Débogage avec la fonction dump197
      • 6. La gestion des ressources statiques (images, feuilles de style, scripts JS...)197
      • 6.1 Les ressources statiques dans une application Symfony197
      • 6.2 Le cas des ressources statiques externes198
      • 6.3 Référencer les ressources publiques depuis un template199
      • 6.4 Cas pratique avec le framework CSS Bootstrap 4200
      • Chapitre 7
      • Accéder aux bases de données avec Doctrine
      • 1. Présentation et concepts203
      • 1.1 Les principes de l'ORM203
      • 1.2 Architecture de Doctrine204
      • 1.2.1 DBAL204
      • 1.2.2 Entité205
      • 1.2.3 ORM205
      • 1.3 La notion d'entité205
      • 2. Installer et configurer Doctrine206
      • 2.1 Mise en place de Doctrine206
      • 2.2 Relation avec PDO207
      • 2.3 Configuration208
      • 3. Définition des entités et de leur mapping209
      • 3.1 Règles de conception des entités209
      • 3.2 Les syntaxes pour le mapping des entités211
      • 3.3 Le mapping d'entités simples214
      • 3.3.1 Définir une entité avec @ORM\Entity214
      • 3.3.2 Gérer les colonnes de la table avec @ORM\Column216
      • 3.3.3 @ORM Table219
      • 3.3.4 Les clés primaires221
      • 3.3.5 Configurer les index222
      • 3.4 Le mapping des relations (clés étrangères)223
      • 3.4.1 @ORM\OneToOne224
      • 3.4.2 @ORM\ManyToOne226
      • 3.4.3 @ORM\ManyToMany227
      • 3.4.4 Relations bidirectionnelles229
      • 3.5 Les outils de la console234
      • 3.5.1 Repérer les erreurs de mapping234
      • 3.5.2 Générer le schéma des données à partir des entités.235
      • 3.5.3 Générer les entités à partir du schéma des données235
      • 4. Manipulation des entités avec l'EntityManager237
      • 4.1 Le rôle de l'EntityManager237
      • 4.2 Insertion de données237
      • 4.3 Modification de données239
      • 4.4 Suppression de données240
      • 4.5 Autres opérations de l'EntityManager241
      • 4.5.1 refresh()241
      • 4.5.2 detach()241
      • 4.6 Les opérations en cascade242
      • 5. Récupérer des entités245
      • 5.1 Le repository245
      • 5.1.1 Un rôle de centralisateur245
      • 5.1.2 Les méthodes de base du repository246
      • 5.1.3 Les méthodes personnalisées du repository248
      • 5.2 Le DQL249
      • 5.2.1 SELECT251
      • 5.2.2 FROM251
      • 5.2.3 JOIN et LEFT JOIN252
      • 5.2.4 WHERE255
      • 5.2.5 ORDER BY259
      • 5.2.6 Les limites260
      • 5.2.7 Les limites et la pagination261
      • 5.3 Le QueryBuilder263
      • 6. Fonctionnalités avancées265
      • 6.1 Les extensions Doctrine265
      • 6.1.1 Installation266
      • 6.1.2 Utilisation d'un slug sur une entité266
      • Chapitre 8
      • La gestion des événements applicatifs
      • 1. Concepts et écoute d'événement applicatifs269
      • 1.1 Le propagation des événements270
      • 1.2 L'écoute des événements272
      • 2. Les événements du Kernel276
      • 2.1 Les différents type d'événements276
      • 2.2 Applications277
      • 3. Les événements de la console279
      • 3.1 Prérequis279
      • 3.2 Les événements279
      • Chapitre 9
      • Les formulaires
      • 1. Un composant MVC283
      • 1.1 Le modèle283
      • 1.2 Le contrôleur285
      • 1.3 La vue286
      • 2. Fonctionnement du composant287
      • 2.1 L'objet « Form »287
      • 2.1.1 Soumission287
      • 2.1.2 Validation288
      • 2.1.3 Vue288
      • 2.2 Les types288
      • 2.3 Les options289
      • 2.4 Les objets « Form » et « FormBuilder »290
      • 2.4.1 Le FormBuilder290
      • 2.4.2 Structure de l'objet Form290
      • 2.5 Association avec l'objet de la couche Modèle292
      • 2.6 Formulaires sans objet293
      • 2.7 La représentation des valeurs294
      • 2.7.1 Transformation des données294
      • 2.7.2 Illustration avec le type date295
      • 3. Les types de champs de formulaire296
      • 3.1 L'héritage296
      • 3.2 FormType297
      • 3.2.1 label297
      • 3.2.2 label attr297
      • 3.2.3 data297
      • 3.2.4 required298
      • 3.2.5 disabled298
      • 3.2.6 mapped298
      • 3.2.7 property_path298
      • 3.2.8 attr299
      • 3.2.9 trim299
      • 3.2.10 error_bubbling299
      • 3.3 TextType300
      • 3.4 PasswordType300
      • 3.5 RepeatedType301
      • 3.5.1 type301
      • 3.5.2 first_options et second_options301
      • 3.5.3 options301
      • 3.5.4 first_name302
      • 3.5.5 second_name302
      • 3.5.6 invalid_message302
      • 3.6 ChoiceType302
      • 3.6.1 choices302
      • 3.6.2 expanded et multiple303
      • 3.6.3 placeholder303
      • 3.6.4 preferred_choices304
      • 3.6.5 Types similaires304
      • 3.7 EntityType304
      • 3.7.1 class305
      • 3.7.2 choice_label305
      • 3.7.3 query_builder305
      • 3.7.4 group_by306
      • 3.7.5 em306
      • 3.8 DateType306
      • 3.8.1 widget306
      • 3.8.2 format307
      • 3.8.3 model_timezone307
      • 3.8.4 view_timezone307
      • 3.8.5 years308
      • 3.8.6 months308
      • 3.8.7 days308
      • 3.8.8 placeholder308
      • 3.8.9 Types similaires308
      • 3.9 FileType309
      • 3.9.1 multiple309
      • 3.9.2 Récupérer les fichiers309
      • 3.9.3 Traiter les fichiers310
      • 3.10 CheckboxType311
      • 3.11 SubmitType, ResetType et ButtonType312
      • 4. Créer des formulaires réutilisables313
      • 4.1 Définir un formulaire avec la classe AbstractType314
      • 4.2 Utiliser un formulaire défini dans une classe320
      • 4.2.1 Définition manuelle320
      • 4.2.2 Avec l'injection de dépendances321
      • 5. Validation des données322
      • 5.1 Objectifs322
      • 5.2 La définition des contraintes de validation322
      • 5.2.1 Ajout des contraintes lors de la configuration d'un formulaire323
      • 5.2.2 Ajout des contraintes sur l'objet associé au formulaire325
      • 5.2.3 Les différents formats de configuration330
      • 5.2.4 Les options333
      • 5.3 Les contraintes et leurs options335
      • 5.3.1 NotBlank et NotNull336
      • 5.3.2 IsNull et Blank336
      • 5.3.3 IsTrue, IsFalse336
      • 5.3.4 Type337
      • 5.3.5 Email, Url et Ip337
      • 5.3.6 Regex339
      • 5.3.7 Length, Count339
      • 5.3.8 Range341
      • 5.3.9 Comparaisons341
      • 5.3.10 Dates342
      • 5.3.11 File342
      • 5.3.12 Image343
      • 5.3.13 Choice343
      • 5.3.14 UniqueEntity344
      • 5.3.15 Données financières345
      • 5.3.16 Callback346
      • 5.3.17 All347
      • 5.3.18 Valid347
      • 5.4 Groupes de validation348
      • 5.5 Validation d'un objet hors du contexte d'un formulaire350
      • 6. Personnaliser le rendu - thèmes de formulaires351
      • 6.1 Afficher le formulaire manuellement352
      • 6.1.1 form_start()352
      • 6.1.2 form_end()353
      • 6.1.3 form_widget()353
      • 6.1.4 form_errors()354
      • 6.1.5 form_label()354
      • 6.1.6 form_row()354
      • 6.1.7 form_rest()354
      • 6.1.8 Arborescence des parties de formulaires355
      • 6.2 Créer des thèmes356
      • 6.2.1 Formulaire d'exemple356
      • 6.2.2 Créer et associer un thème de formulaires357
      • 6.2.3 Comprendre le nom des blocks361
      • Chapitre 10
      • La sécurité dans une application Symfony
      • 1. Présentation et concepts de sécurité363
      • 1.1 Les challenges de la sécurité des applications web363
      • 1.2 La sécurité dans Symfony364
      • 2. Authentification365
      • 2.1 Pare-feu365
      • 2.1.1 Pare-feu pour ressources statiques/développement366
      • 2.2 Authentification HTTP367
      • 2.3 Authentification par formulaire de connexion367
      • 2.4 Connexion automatique des utilisateurs370
      • 2.5 Déconnexion des utilisateurs371
      • 3. Utilisateurs et rôles372
      • 3.1 D'utilisateur372
      • 3.1.1 Récupérer l'utilisateur courant373
      • 3.2 Les fournisseurs d'utilisateurs374
      • 3.2.1 En mémoire374
      • 3.2.2 Fournisseur d'utilisateurs de bases de données375
      • 3.2.3 Fournisseur d'utilisateurs personnalisé377
      • 3.2.4 Notes additionnelles381
      • 3.3 Cryptage des mots de passe382
      • 3.3.1 Encodeurs382
      • 3.3.2 Le salage383
      • 3.3.3 Crypter un mot de passe385
      • 3.4 Les rôles386
      • 4. Autorisations389
      • 4.1 Les rôles, au coeur du processus389
      • 4.2 Vérifier le rôle de l'utilisateur390
      • 4.3 Sécuriser une action391
      • 4.4 Sécuriser une section de l'application392
      • 4.5 Sécuriser selon d'autres critères393
      • 4.6 Pour aller plus loin395
      • Chapitre 11
      • Tester son application Symfony
      • 1. Introduction au test logiciel397
      • 1.1 Les tests : un indispensable pour la qualité logicielle397
      • 1.2 Les différentes catégories de tests398
      • 1.2.1 Les tests unitaires398
      • 1.2.2 Les tests d'intégration398
      • 1.2.3 Les tests fonctionnels399
      • 1.3 Analogie399
      • 1.4 L'approche des tests en PHP400
      • 2. Les tests unitaires avec PHPUnit401
      • 2.1 Mise en place des tests401
      • 2.2 Règle d'écriture des tests401
      • 2.3 Exécuter les tests403
      • 2.3.1 Exécuter une partie des tests403
      • 3. Les tests fonctionnels404
      • 3.1 Différence par rapport aux tests unitaires et d'intégration404
      • 3.2 Tester une action404
      • 3.3 Les objets pour l'écriture des test405
      • 3.3.1 L'objet Client405
      • 3.3.2 L'objet Crawler408
      • 3.4 Soumettre un formulaire409
      • 3.5 Pour aller plus loin410
      • Chapitre 12
      • Journalisation et surveillance avec Symfony
      • 1. Générer des journaux avec Monolog413
      • 1.1 La journalisation413
      • 1.2 La librairie Monolog414
      • 1.3 Le service logger415
      • 1.4 Le fichier journal416
      • 1.4.1 Identifier la cause d'un bogue416
      • 1.4.2 Le problème416
      • 1.5 Les gestionnaires (handlers)417
      • 1.5.1 Définir plusieurs gestionnaires417
      • 1.5.2 Envoyer des logs par e-mail418
      • 1.5.3 Utiliser un tampon (buffer)419
      • 1.5.4 Ajouter des informations complémentaires419
      • 1.6 Les canaux (channels)421
      • 1.6.1 Ajouter ses propres canaux421
      • 1.6.2 Envoyer un enregistrement sur un canal donné422
      • 1.6.3 Configurer les gestionnaires par canaux422
      • 1.6.4 Gestion des erreurs 404423
      • 2. Le monitoring avec Prometheus et Grafana425
      • 2.1 Un allié proactif au logging425
      • 2.2 Préparation d'une application Symfony pour Prometheus426
      • 2.3 Instrumenter les mesures431
      • 2.4 Pour aller plus loin432
      • Chapitre 13
      • Amélioration des performances
      • 1. La mise en cache de pages433
      • 1.1 Autour du protocole HTTP433
      • 1.2 Un serveur proxy inverse (ou « reverse proxy »)434
      • 1.2.1 HttpCache436
      • 1.2.2 Nginx437
      • 1.2.3 Varnish438
      • 1.3 Les en-têtes443
      • 1.4 Les réponses publiques et privées443
      • 1.5 L'expiration444
      • 1.5.1 L'en-tête Expires444
      • 1.5.2 Les directives max-age et s-max-age445
      • 1.5.3 L'annotation @Cache445
      • 1.6 La validation447
      • 1.6.1 Par date avec Last-Modified447
      • 1.6.2 Par empreinte avec l'en-tête ETag449
      • 1.7 Les ESI450
      • 1.7.1 Activation450
      • 1.7.2 Générer une balise ESI451
      • 2. L'autochargement des classes452
      • 2.1 Générer un classmap453
      • 3. Le cache avec Doctrine453
      • 3.1 Les différents types de cache453
      • 3.2 Configuration454
      • 4. Le cache d'annotations455
      • 5. Les sessions456
      • 6. Autres optimisations457
      • 6.1 Choix de sa SAPI PHP457
      • 6.1.1 Qu'est-ce qu'une SAPI ?457
      • 6.1.2 Module du serveur458
      • 6.1.3 CGI458
      • 6.1.4 FastCGI459
      • 6.1.5 Conclusion459
      • 6.2 Mise en cache d'OPCodes460
      • 6.2.1 LesOPCodes460
      • 6.2.2 Une étape lourde461
      • 6.2.3 La mise en cache461
      • 6.3 La compression des réponses461
      • 6.3.1 Compression gzip461
      • 6.3.2 Précompression462
      • 6.4 Optimisation des images463
      • 6.4.1 Validation463
      • 6.4.2 Expiration463
      • 6.4.3 Autres techniques463
      • 7. Test des performances d'un site web464
      • 7.1 Côté serveur464
      • 7.1.1 Apache Bench464
      • 7.1.2 Xhprof465
      • 7.2 Côté client465
      • Chapitre 14
      • Internationalisation des applications Symfony
      • 1. Introduction467
      • 1.1 Culture, internationalisation et régionalisation467
      • 1.1.1 La culture (Locale)468
      • 1.1.2 Internationalisation468
      • 1.1.3 Régionalisation468
      • 1.2 L'internationalisation dans Symfony469
      • 2. Détecter la culture d'un utilisateur469
      • 2.1 Les techniques469
      • 2.1.1 Négociation de contenu469
      • 2.1.2 Par l'URL470
      • 2.2 En pratique470
      • 3. Activation des traductions471
      • 3.1 Le composant translator471
      • 3.2 Configuration du framework471
      • 4. Les routes et les traductions472
      • 5. Les fichiers de traductions473
      • 5.1 Organisation et règles de nommage473
      • 5.1.1 Règle de nommage473
      • 5.2 Outillage pour la création des fichiers de traduction474
      • 5.2.1 Afficher la liste des traductions manquantes474
      • 5.2.2 Générer un fichier de traduction475
      • 6. Traduction d'un message475
      • 6.1 Le service translator475
      • 6.2 Les paramètres de substitution (placeholders)476
      • 6.3 Utilisation dans les templates Twig477
      • Chapitre 15
      • Développer une API REST avec Symfony
      • 1. Introduction à REST et concepts fondamentaux479
      • 1.1 Les concepts de REST479
      • 1.1.1 Les ressources480
      • 1.1.2 Le changement d'état d'une ressource480
      • 1.2 Architecture et protocole HTTP480
      • 1.3 Les Single-Page Applications481
      • 2. La gestion du format JSON482
      • 2.1 Présentation du format JSON482
      • 2.1.1 Représentation des données en JSON483
      • 2.1.2 Types de données483
      • 2.1.3 Structures484
      • 2.2 Le support de JSON en PHP485
      • 2.3 Et dans Symfony ?486
      • 3. Mise en place d'une API REST486
      • 3.1 Le service serializer487
      • 3.1.1 Sérialiser des données487
      • 3.1.2 Désérialiser des données488
      • 3.2 Adaptation des contrôleurs488
      • 4. Les objets de requête et de réponse489
      • 4.1 Le contenu et les en-têtes de requête490
      • 4.2 Manipulation de la réponse avec Response et JsonResponse491
      • 4.2.1 Renvoyer une réponse au format JSON492
      • 4.3 Les codes de réponse HTTP dans une API REST493
      • 4.3.1 Problématique de l'état de la réponse493
      • 4.3.2 Expression de la réponse avec HTTP493
      • 4.3.3 Mise en oeuvre494
      • 5. Tester une API REST495
      • 5.1 Les limites du navigateur web495
      • 5.2 Les outils496
      • 5.2.1 Postman496
      • 5.2.2 SOAP UI498
      • Annexes
      • 1. Créer une commande pour la console499
      • 1.1 La configuration d'une commande499
      • 1.2 Les objets input et output500
      • 1.3 Le Service Container502
      • 1.4 Commande d'exemple503
      • 2. Envoyer des e-mails grâce à SwiftMailer504
      • 2.1 Le protocole SMTP505
      • 2.2 Le transport505
      • 2.2.1 Le transport smtp506
      • 2.2.2 Le transport sendmail506
      • 2.3 Envoi d'un e-mail507
      • 3. Travailler avec les sessions508
      • 3.1 Introduction508
      • 3.2 Intégration des sessions dans Symfony509
      • 3.3 Configuration du gestionnaire de sauvegarde509
      • 3.3.1 Avec PHP509
      • 3.3.2 Avec Symfony510
      • 3.4 Les messages « flash »511
      • 4. Déployer une application symfony513
      • 4.1 Le déploiement513
      • 4.2 Faut-il déployer par FTP ?513
      • 4.3 Les différentes étapes514
      • 4.4 Capistrano et Capifony515
      • 4.4.1 Installation515
      • 4.4.2 Configuration516
      • 4.4.3 Déploiement518
      • 4.5 Fonctionnalités avancées518
      • Index519

  • Origine de la notice:
    • Electre
  • Disponible - 681.227 AMA

    Niveau 3 - Informatique