1. Livres et vidéos
  2. Symfony 4 (LTS) - Développez des sites web PHP structurés et performants

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

  • En stock
  • Expédié en 24h00
  • Livraison à partir de 0,01 €
  • Version en ligne offerte pendant 1 an
  • 1 h d'accès gratuit à tous nos livres et vidéos pour chaque commande
  • Accessible immédiatement
  • Version HTML
  • Accès illimité 24h/24, 7J/7
  • Accès illimité 24h/24, 7J/7
  • Tous les livres en ligne, les vidéos et les cours enregistrés ENI
  • Plus de 10 nouveautés livres et vidéos chaque mois
  • Les nouveautés disponibles le jour de leur sortie
  • Accès 100% en ligne

Présentation

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.



Quizinclus dans
la version en ligne !
  • Testez vos connaissances à l'issue de chaque chapitre
  • Validez vos acquis

Table des matières

  • Introduction
    • 1. Avant-propos
    • 2. Public visé
    • 3. Prérequis
    • 4. Objectifs du livre
    • 5. Le développement avec les frameworks
      • 5.1 Complexité des développements et productivité
        • 5.1.1 Productivité et qualité logicielle
        • 5.1.2 Intégration et livraison continues
      • 5.2 Particularité des développements en PHP
        • 5.2.1 Contexte historique de PHP
        • 5.2.2 Évolutions
      • 5.3 L’apport des frameworks
        • 5.3.1 Éviter les problèmes techniques liés à l’organisation du code
        • 5.3.2 Définir des responsabilités
        • 5.3.3 Ne pas réinventer la roue
        • 5.3.4 Utiliser des modèles de conception éprouvés
    • 6. Symfony
      • 6.1 Historique
      • 6.2 Gouvernance et gestion des versions
        • 6.2.1 Les versions
        • 6.2.2 Le cycle de « release »
      • 6.3 Choisir sa version pour un projet
  • Mise en place d’un projet Symfony
    • 1. L’outillage nécessaire
      • 1.1 Introduction
      • 1.2 Symfony : Un projet PHP
        • 1.2.1 Préconisation d’installation
        • 1.2.2 Installation sous Linux
        • 1.2.3 Installation sous Windows
      • 1.3 L’installeur Symfony
      • 1.4 Composer
        • 1.4.1 Installer Composer
      • 1.5 Les environnements de développement pour Symfony
        • 1.5.1 Un IDE pour Symfony !
        • 1.5.2 PHPStorm
        • 1.5.3 Eclipse IDE for PHP Developers
        • 1.5.4 Visual Studio Code
        • 1.5.5 Conclusion
    • 2. Création d’un projet Symfony
      • 2.1 Prérequis
      • 2.2 Création via l’installeur Symfony
      • 2.3 Création via Composer
      • 2.4 Configurer son serveur web
        • 2.4.1 Serveur web PHP
        • 2.4.2 Apache et Nginx
    • 3. Structure de l’application
      • 3.1 Arborescence du projet
      • 3.2 Règles et conventions d’organisation du projet
        • 3.2.1 Le standard PSR-4
        • 3.2.2 Conventions de nommage
      • 3.3 La configuration d’une application Symfony
        • 3.3.1 Les annotations
        • 3.3.2 Le format YAML
        • 3.3.3 Le format XML
        • 3.3.4 Le format PHP
        • 3.3.5 Choisir son format de configuration
  • Architecture du framework
    • 1. Le modèle de conception MVC
      • 1.1 Définitions et responsabilités
        • 1.1.1 La vue
        • 1.1.2 Le modèle
        • 1.1.3 Le contrôleur
      • 1.2 En pratique
        • 1.2.1 Le contrôleur frontal
        • 1.2.2 Le routage
        • 1.2.3 Le contrôleur et le modèle
        • 1.2.4 La vue
        • 1.2.5 En synthèse
    • 2. Architecture de Symfony
      • 2.1 Présentation
      • 2.2 Le contrôleur frontal
      • 2.3 Le Service Container
      • 2.4 Le modèle MVC dans Symfony ?
      • 2.5 L’approche par composant
    • 3. Symfony Flex
      • 3.1 Présentation
      • 3.2 Fonctionnement de Symfony Flex
      • 3.3 Les recettes Flex
        • 3.3.1 Un exemple concret
    • 4. Les environnements
      • 4.1 Principe et apports
      • 4.2 Les fichiers de configuration
      • 4.3 Dans le contexte HTTP
      • 4.4 Dans le contexte CLI (Command Line Interface)
    • 5. Le chargement automatique de classes
      • 5.1 Le standard PSR-4
      • 5.2 Mécanismes alternatifs
      • 5.3 Application aux applications Symfony
    • 6. La console
      • 6.1 Présentation
      • 6.2 Les commandes
        • 6.2.1 Lister les commandes disponibles
        • 6.2.2 Exécuter une commande
      • 6.3 Les options
      • 6.4 Les arguments
      • 6.5 L’aide sur les commandes
      • 6.6 Exécuter rapidement des commandes
    • 7. Les outils pour le débogage
      • 7.1 Le profiler Symfony
      • 7.2 La fonction dump()
  • Routage et contrôleur
    • 1. Fonctionnement du routage dans Symfony
      • 1.1 Définition
      • 1.2 Le répertoire public et le contrôleur frontal
      • 1.3 Une requête, une action
    • 2. Définition des routes
      • 2.1 Les différents formats de définition
      • 2.2 Les options sur la définition des routes
    • 3. Configurer le path
      • 3.1 Illustration par l’exemple : /hello/world
      • 3.2 La notation du contrôleur
      • 3.3 Importer des routes depuis d’autres fichiers
      • 3.4 Comprendre l’ordre de chargement des routes
      • 3.5 Préfixer les routes
      • 3.6 Les paramètres de substitution des routes
      • 3.7 Les restrictions sur les paramètres
      • 3.8 Obtenir des informations sur le routage
    • 4. Routage par nom de domaine
      • 4.1 Prérequis
      • 4.2 Exemple de mise en œuvre
      • 4.3 Explications
    • 5. Le contrôleur
      • 5.1 Modèle de programmation et règles
      • 5.2 Travailler avec les services
      • 5.3 Utiliser les paramètres de substitution
        • 5.3.1 Paramètres de substitution des routes
        • 5.3.2 Exemples
      • 5.4 Travailler avec les URL
      • 5.5 Effectuer une redirection
      • 5.6 La délégation de requête
      • 5.7 La gestion des erreurs et des pages d’erreurs dans les contôleurs
        • 5.7.1 Le contrôleur
        • 5.7.2 La vue
  • L’injection de dépendances
    • 1. Le modèle de conception IoC : Inversion Of Control
      • 1.1 Apports dans une architecture applicative
      • 1.2 IoC et injection de dépendances
    • 2. L’injection de dépendances
      • 2.1 Principes de base
      • 2.2 Les différentes techniques d’injection de dépendances
        • 2.2.1 L’injection de dépendances par le constructeur
        • 2.2.2 L’injection de dépendances par setter (mutateur)
        • 2.2.3 L’injection de dépendances par propriété
      • 2.3 Les avantages
    • 3. Le Service Container
      • 3.1 Les services
      • 3.2 Explications au travers d’un service X
    • 4. Créer un service et configurer ses injections
      • 4.1 Créer un service
      • 4.2 Les différents types d’injections dans un service Symfony
        • 4.2.1 Injection par constructeur
        • 4.2.2 Injection par méthode
        • 4.2.3 Injection par propriété
      • 4.3 Injection automatique avec l'autowiring
      • 4.4 Les services « lazy »
    • 5. Le chargement automatique de services
      • 5.1 La configuration
      • 5.2 Exemple d’utilisation
    • 6. Créer des services réutilisables et distribuables
      • 6.1 Le concept de bundle
        • 6.1.1 Créer un bundle
        • 6.1.2 Arborescence du bundle
      • 6.2 La définition de services dans un bundle
      • 6.3 La configuration
        • 6.3.1 Définir une arborescence
        • 6.3.2 Les différentes étapes du traitement de la configuration
        • 6.3.3 Récupérer la configuration validée
      • 6.4 Les « Compiler Passes »
        • 6.4.1 Concept
        • 6.4.2 Les tags
        • 6.4.3 Le Compiler Pass
  • Les templates avec Twig
    • 1. Présentation et concepts
      • 1.1 Le concept de Templating
      • 1.2 Templating et modèle MVC
    • 2. Twig
      • 2.1 Présentation
      • 2.2 Pourquoi un nouveau langage ?
      • 2.3 Mise en pratique
      • 2.4 Remarques sur l’utilisation
      • 2.5 La notation des templates
      • 2.6 Extension du système de templates
      • 2.7 L'annotation @Template
    • 3. Les gabarits de pages (layouts) et les blocks
      • 3.1 La composition de pages
      • 3.2 Définition des gabarits
      • 3.3 Les blocks
    • 4. Le langage Twig
      • 4.1 Les différents types d’instructions
      • 4.2 Manipulation des variables
        • 4.2.1 Utilisation de variables dans les templates
        • 4.2.2 Utilisation des variables de type tableau ou objet
      • 4.3 Structures de contrôle et tags
        • 4.3.1 Les conditions
        • 4.3.2 Les boucles
      • 4.4 Les balises Twig (tags)
        • 4.4.1 Créer et modifier des variables
        • 4.4.2 Twig et l’échappement
      • 4.5 Inclure des templates
    • 5. Les filtres et les fonctions
      • 5.1 Présentation des filtres
        • 5.1.1 Utilisation et syntaxe
      • 5.2 Les principaux filtres Twig
        • 5.2.1 Chaînes de caractères
        • 5.2.2 Échappement
        • 5.2.3 L’encodage
      • 5.3 Les fonctions
        • 5.3.1 Twig et le routage
        • 5.3.2 Débogage avec la fonction dump
    • 6. La gestion des ressources statiques (images, feuilles de style, scripts JS...)
      • 6.1 Les ressources statiques dans une application Symfony
      • 6.2 Le cas des ressources statiques externes
      • 6.3 Référencer les ressources publiques depuis un template
      • 6.4 Cas pratique avec le framework CSS Bootstrap 4
  • Accéder aux bases de données avec Doctrine
    • 1. Présentation et concepts
      • 1.1 Les principes de l’ORM
      • 1.2 Architecture de Doctrine
        • 1.2.1 DBAL
        • 1.2.2 Entité
        • 1.2.3 ORM
      • 1.3 La notion d’entité
    • 2. Installer et configurer Doctrine
      • 2.1 Mise en place de Doctrine
      • 2.2 Relation avec PDO
      • 2.3 Configuration
    • 3. Définition des entités et de leur mapping
      • 3.1 Règles de conception des entités
      • 3.2 Les syntaxes pour le mapping des entités
      • 3.3 Le mapping d’entités simples
        • 3.3.1 Définir une entité avec @ORM\Entity
        • 3.3.2 Gérer les colonnes de la table avec @ORM\Column
        • 3.3.3 @ORM\Table
        • 3.3.4 Les clés primaires
        • 3.3.5 Configurer les index
      • 3.4 Le mapping des relations (clés étrangères)
        • 3.4.1 @ORM\OneToOne
        • 3.4.2 @ORM\ManyToOne
        • 3.4.3 @ORM\ManyToMany
        • 3.4.4 Relations bidirectionnelles
      • 3.5 Les outils de la console
        • 3.5.1 Repérer les erreurs de mapping
        • 3.5.2 Générer le schéma des données à partir des entités
        • 3.5.3 Générer les entités à partir du schéma des données
    • 4. Manipulation des entités avec l’EntityManager
      • 4.1 Le rôle de l’EntityManager
      • 4.2 Insertion de données
      • 4.3 Modification de données
      • 4.4 Suppression de données
      • 4.5 Autres opérations de l’EntityManager
        • 4.5.1 refresh()
        • 4.5.2 detach()
      • 4.6 Les opérations en cascade
    • 5. Récupérer des entités
      • 5.1 Le repository
        • 5.1.1 Un rôle de centralisateur
        • 5.1.2 Les méthodes de base du repository
        • 5.1.3 Les méthodes personnalisées du repository
      • 5.2 Le DQL
        • 5.2.1 SELECT
        • 5.2.2 FROM
        • 5.2.3 JOIN et LEFT JOIN
        • 5.2.4 WHERE
        • 5.2.5 ORDER BY
        • 5.2.6 Les limites
        • 5.2.7 Les limites et la pagination
      • 5.3 Le QueryBuilder
    • 6. Fonctionnalités avancées
      • 6.1 Les extensions Doctrine
        • 6.1.1 Installation
        • 6.1.2 Utilisation d'un slug sur une entité
  • La gestion des événements applicatifs
    • 1. Concepts et écoute d’événement applicatifs
      • 1.1 Le propagation des événements
      • 1.2 L’écoute des événements
    • 2. Les événements du Kernel
      • 2.1 Les différents type d’événements
      • 2.2 Applications
    • 3. Les événements de la console
      • 3.1 Prérequis
      • 3.2 Les événements
  • Les formulaires
    • 1. Un composant MVC
      • 1.1 Le modèle
      • 1.2 Le contrôleur
      • 1.3 La vue
    • 2. Fonctionnement du composant
      • 2.1 L’objet « Form »
        • 2.1.1 Soumission
        • 2.1.2 Validation
        • 2.1.3 Vue
      • 2.2 Les types
      • 2.3 Les options
      • 2.4 Les objets « Form » et « FormBuilder »
        • 2.4.1 Le FormBuilder
        • 2.4.2 Structure de l’objet Form
      • 2.5 Association avec l’objet de la couche Modèle
      • 2.6 Formulaires sans objet
      • 2.7 La représentation des valeurs
        • 2.7.1 Transformation des données
        • 2.7.2 Illustration avec le type date
    • 3. Les types de champs de formulaire
      • 3.1 L’héritage
      • 3.2 FormType
        • 3.2.1 label
        • 3.2.2 label attr
        • 3.2.3 data
        • 3.2.4 required
        • 3.2.5 disabled
        • 3.2.6 mapped
        • 3.2.7 property_path
        • 3.2.8 attr
        • 3.2.9 trim
        • 3.2.10 error_bubbling
      • 3.3 TextType
      • 3.4 PasswordType
      • 3.5 RepeatedType
        • 3.5.1 type
        • 3.5.2 first_options et second_options
        • 3.5.3 options
        • 3.5.4 first_name
        • 3.5.5 second_name
        • 3.5.6 invalid_message
      • 3.6 ChoiceType
        • 3.6.1 choices
        • 3.6.2 expanded et multiple
        • 3.6.3 placeholder
        • 3.6.4 preferred_choices
        • 3.6.5 Types similaires
      • 3.7 EntityType
        • 3.7.1 class
        • 3.7.2 choice_label
        • 3.7.3 query_builder
        • 3.7.4 group_by
        • 3.7.5 em
      • 3.8 DateType
        • 3.8.1 widget
        • 3.8.2 format
        • 3.8.3 model_timezone
        • 3.8.4 view_timezone
        • 3.8.5 years
        • 3.8.6 months
        • 3.8.7 days
        • 3.8.8 placeholder
        • 3.8.9 Types similaires
      • 3.9 FileType
        • 3.9.1 multiple
        • 3.9.2 Récupérer les fichiers
        • 3.9.3 Traiter les fichiers
      • 3.10 CheckboxType
      • 3.11 SubmitType, ResetType et ButtonType
    • 4. Créer des formulaires réutilisables
      • 4.1 Définir un formulaire avec la classe AbstractType
      • 4.2 Utiliser un formulaire défini dans une classe
        • 4.2.1 Définition manuelle
        • 4.2.2 Avec l'injection de dépendances
    • 5. Validation des données
      • 5.1 Objectifs
      • 5.2 La définition des contraintes de validation
        • 5.2.1 Ajout des contraintes lors de la configuration d’un formulaire
        • 5.2.2 Ajout des contraintes sur l’objet associé au formulaire
        • 5.2.3 Les différents formats de configuration
        • 5.2.4 Les options
      • 5.3 Les contraintes et leurs options
        • 5.3.1 NotBlank et NotNull
        • 5.3.2 IsNull et Blank
        • 5.3.3 IsTrue, IsFalse
        • 5.3.4 Type
        • 5.3.5 Email, Url et Ip
        • 5.3.6 Regex
        • 5.3.7 Length, Count
        • 5.3.8 Range
        • 5.3.9 Comparaisons
        • 5.3.10 Dates
        • 5.3.11 File
        • 5.3.12 Image
        • 5.3.13 Choice
        • 5.3.14 UniqueEntity
        • 5.3.15 Données financières
        • 5.3.16 Callback
        • 5.3.17 All
        • 5.3.18 Valid
      • 5.4 Groupes de validation
      • 5.5 Validation d’un objet hors du contexte d’un formulaire
    • 6. Personnaliser le rendu - thèmes de formulaires
      • 6.1 Afficher le formulaire manuellement
        • 6.1.1 form_start()
        • 6.1.2 form_end()
        • 6.1.3 form_widget()
        • 6.1.4 form_errors()
        • 6.1.5 form_label()
        • 6.1.6 form_row()
        • 6.1.7 form_rest()
        • 6.1.8 Arborescence des parties de formulaires
      • 6.2 Créer des thèmes
        • 6.2.1 Formulaire d’exemple
        • 6.2.2 Créer et associer un thème de formulaires
        • 6.2.3 Comprendre le nom des blocks
  • La sécurité dans une application Symfony
    • 1. Présentation et concepts de sécurité
      • 1.1 Les challenges de la sécurité des applications web
      • 1.2 La sécurité dans Symfony
    • 2. Authentification
      • 2.1 Pare-feu
        • 2.1.1 Pare-feu pour ressources statiques/développement
      • 2.2 Authentification HTTP
      • 2.3 Authentification par formulaire de connexion
      • 2.4 Connexion automatique des utilisateurs
      • 2.5 Déconnexion des utilisateurs
    • 3. Utilisateurs et rôles
      • 3.1 L’utilisateur
        • 3.1.1 Récupérer l’utilisateur courant
      • 3.2 Les fournisseurs d’utilisateurs
        • 3.2.1 En mémoire
        • 3.2.2 Fournisseur d’utilisateurs de bases de données
        • 3.2.3 Fournisseur d’utilisateurs personnalisé
        • 3.2.4 Notes additionnelles
      • 3.3 Cryptage des mots de passe
        • 3.3.1 Encodeurs
        • 3.3.2 Le salage
        • 3.3.3 Crypter un mot de passe
      • 3.4 Les rôles
    • 4. Autorisations
      • 4.1 Les rôles, au cœur du processus
      • 4.2 Vérifier le rôle de l’utilisateur
      • 4.3 Sécuriser une action
      • 4.4 Sécuriser une section de l’application
      • 4.5 Sécuriser selon d’autres critères
      • 4.6 Pour aller plus loin
  • Tester son application Symfony
    • 1. Introduction au test logiciel
      • 1.1 Les tests : un indispensable pour la qualité logicielle
      • 1.2 Les différentes catégories de tests
        • 1.2.1 Les tests unitaires
        • 1.2.2 Les tests d’intégration
        • 1.2.3 Les tests fonctionnels
      • 1.3 Analogie
      • 1.4 L’approche des tests en PHP
    • 2. Les tests unitaires avec PHPUnit
      • 2.1 Mise en place des tests
      • 2.2 Règle d’écriture des tests
      • 2.3 Exécuter les tests
        • 2.3.1 Exécuter une partie des tests
    • 3. Les tests fonctionnels
      • 3.1 Différence par rapport aux tests unitaires et d’intégration
      • 3.2 Tester une action
      • 3.3 Les objets pour l’écriture des test
        • 3.3.1 L’objet Client
        • 3.3.2 L’objet Crawler
      • 3.4 Soumettre un formulaire
      • 3.5 Pour aller plus loin
  • Journalisation et surveillance avec Symfony
    • 1. Générer des journaux avec Monolog
      • 1.1 La journalisation
      • 1.2 La librairie Monolog
      • 1.3 Le service logger
      • 1.4 Le fichier journal
        • 1.4.1 Identifier la cause d'un bogue
        • 1.4.2 Le problème
      • 1.5 Les gestionnaires (handlers)
        • 1.5.1 Définir plusieurs gestionnaires
        • 1.5.2 Envoyer des logs par e-mail
        • 1.5.3 Utiliser un tampon (buffer)
        • 1.5.4 Ajouter des informations complémentaires
      • 1.6 Les canaux (channels)
        • 1.6.1 Ajouter ses propres canaux
        • 1.6.2 Envoyer un enregistrement sur un canal donné
        • 1.6.3 Configurer les gestionnaires par canaux
        • 1.6.4 Gestion des erreurs 404
    • 2. Le monitoring avec Prometheus et Grafana
      • 2.1 Un allié proactif au logging
      • 2.2 Préparation d’une application Symfony pour Prometheus
      • 2.3 Instrumenter les mesures
      • 2.4 Pour aller plus loin
  • Amélioration des performances
    • 1. La mise en cache de pages
      • 1.1 Autour du protocole HTTP
      • 1.2 Un serveur proxy inverse (ou « reverse proxy »)
        • 1.2.1 HttpCache
        • 1.2.2 Nginx
        • 1.2.3 Varnish
      • 1.3 Les en-têtes
      • 1.4 Les réponses publiques et privées
      • 1.5 L’expiration
        • 1.5.1 L’en-tête Expires
        • 1.5.2 Les directives max-age et s-max-age
        • 1.5.3 L’annotation @Cache
      • 1.6 La validation
        • 1.6.1 Par date avec Last-Modified
        • 1.6.2 Par empreinte avec l’en-tête ETag
      • 1.7 Les ESI
        • 1.7.1 Activation
        • 1.7.2 Générer une balise ESI
    • 2. L’autochargement des classes
      • 2.1 Générer un classmap
    • 3. Le cache avec Doctrine
      • 3.1 Les différents types de cache
      • 3.2 Configuration
    • 4. Le cache d’annotations
    • 5. Les sessions
    • 6. Autres optimisations
      • 6.1 Choix de sa SAPI PHP
        • 6.1.1 Qu'est-ce qu'une SAPI ?
        • 6.1.2 Module du serveur
        • 6.1.3 CGI
        • 6.1.4 FastCGI
        • 6.1.5 Conclusion
      • 6.2 Mise en cache d'OPCodes
        • 6.2.1 Les OPCodes
        • 6.2.2 Une étape lourde
        • 6.2.3 La mise en cache
      • 6.3 La compression des réponses
        • 6.3.1 Compression gzip
        • 6.3.2 Précompression
      • 6.4 Optimisation des images
        • 6.4.1 Validation
        • 6.4.2 Expiration
        • 6.4.3 Autres techniques
    • 7. Test des performances d'un site web
      • 7.1 Côté serveur
        • 7.1.1 Apache Bench
        • 7.1.2 Xhprof
      • 7.2 Côté client
  • Internationalisation des applications Symfony
    • 1. Introduction
      • 1.1 Culture, internationalisation et régionalisation
        • 1.1.1 La culture (Locale)
        • 1.1.2 Internationalisation
        • 1.1.3 Régionalisation
      • 1.2 L’internationalisation dans Symfony
    • 2. Détecter la culture d'un utilisateur
      • 2.1 Les techniques
        • 2.1.1 Négociation de contenu
        • 2.1.2 Par l'URL
      • 2.2 En pratique
    • 3. Activation des traductions
      • 3.1 Le composant translator
      • 3.2 Configuration du framework
    • 4. Les routes et les traductions
    • 5. Les fichiers de traductions
      • 5.1 Organisation et règles de nommage
        • 5.1.1 Règle de nommage
      • 5.2 Outillage pour la création des fichiers de traduction
        • 5.2.1 Afficher la liste des traductions manquantes
        • 5.2.2 Générer un fichier de traduction
    • 6. Traduction d'un message
      • 6.1 Le service translator
      • 6.2 Les paramètres de substitution (placeholders)
      • 6.3 Utilisation dans les templates Twig
  • Développer une API REST avec Symfony
    • 1. Introduction à REST et concepts fondamentaux
      • 1.1 Les concepts de REST
        • 1.1.1 Les ressources
        • 1.1.2 Le changement d’état d’une ressource
      • 1.2 Architecture et protocole HTTP
      • 1.3 Les Single-Page Applications
    • 2. La gestion du format JSON
      • 2.1 Présentation du format JSON
        • 2.1.1 Représentation des données en JSON
        • 2.1.2 Types de données
        • 2.1.3 Structures
      • 2.2 Le support de JSON en PHP
      • 2.3 Et dans Symfony ?
    • 3. Mise en place d’une API REST
      • 3.1 Le service serializer
        • 3.1.1 Sérialiser des données
        • 3.1.2 Désérialiser des données
      • 3.2 Adaptation des contrôleurs
    • 4. Les objets de requête et de réponse
      • 4.1 Le contenu et les en-têtes de requête
      • 4.2 Manipulation de la réponse avec Response et JsonResponse
        • 4.2.1 Renvoyer une réponse au format JSON
      • 4.3 Les codes de réponse HTTP dans une API REST
        • 4.3.1 Problématique de l’état de la réponse
        • 4.3.2 Expression de la réponse avec HTTP
        • 4.3.3 Mise en œuvre
    • 5. Tester une API REST
      • 5.1 Les limites du navigateur web
      • 5.2 Les outils
        • 5.2.1 Postman
        • 5.2.2 SOAP UI
  • Annexes
    • 1. Créer une commande pour la console
      • 1.1 La configuration d’une commande
      • 1.2 Les objets input et output
      • 1.3 Le Service Container
      • 1.4 Commande d’exemple
    • 2. Envoyer des e-mails grâce à SwiftMailer
      • 2.1 Le protocole SMTP
      • 2.2 Le transport
        • 2.2.1 Le transport smtp
        • 2.2.2 Le transport sendmail
      • 2.3 Envoi d'un e-mail
    • 3. Travailler avec les sessions
      • 3.1 Introduction
      • 3.2 Intégration des sessions dans Symfony
      • 3.3 Configuration du gestionnaire de sauvegarde
        • 3.3.1 Avec PHP
        • 3.3.2 Avec Symfony
      • 3.4 Les messages « flash »
    • 4. Déployer une application symfony
      • 4.1 Le déploiement
      • 4.2 Faut-il déployer par FTP ?
      • 4.3 Les différentes étapes
      • 4.4 Capistrano et Capifony
        • 4.4.1 Installation
        • 4.4.2 Configuration
        • 4.4.3 Déploiement
      • 4.5 Fonctionnalités avancées
      • Index

Auteurs

Bilal AMARNIEn savoir plus

Bilal Amarni est consultant, développeur PHP freelance. Titulaire de la certification Symfony avec la mention Expert, il maîtrise complètement l’architecture du framework ainsi que son utilisation. Dans ces ouvrages, il partage avec le lecteur l'expérience qu'il a acquise au cours de ses différentes missions et projets.

Etienne LangletEn savoir plus

Excellent pédagogue, Etienne LANGLET est formateur et consultant depuis plus de 20 ans en développement et méthodologie. Développeur PHP depuis 1999, il développe avec Symfony et dispense des formations sur le sujet depuis près de 10 ans.

Caractéristiques

  • Nombre de pages 533 pages
  • Parution septembre 2021
    • Livre (broché) - 17 x 21 cm
    • ISBN : 978-2-409-03158-8
    • EAN : 9782409031588
    • Ref. ENI : EI4SYM
  • Parution septembre 2021
    • HTML
    • ISBN : 978-2-409-03159-5
    • EAN : 9782409031595
    • Ref. ENI : LNEI4SYM

Téléchargements

En complétant ce formulaire, vous acceptez d'être contacté afin de recevoir des informations sur nos produits et services ainsi que nos communications marketing. Vous aurez la possibilité de vous désabonner de nos communications à tout moment. Pour plus d'informations sur notre politique de protection des données, cliquez ici.
  • Des fichiers complémentaires (827 Ko)