Ce support s’adresse aussi bien au lecteur qui souhaite disposer des connaissances nécessaires pour apprendre à développer des applications web avec PHP 8 et le framework Symfony (en version 6), qu’à celui disposant déjà de connaissances en PHP et qui souhaiterait approfondir sa connaissance du framework. Partant des bases jusqu’à mener le lecteur progressivement vers des notions plus avancées, ce support ne nécessite aucune connaissance préalable dans le domaine du développement pour être lu...
Ce support s’adresse aussi bien au lecteur qui souhaite disposer des connaissances nécessaires pour apprendre à développer des applications web avec PHP 8 et le framework Symfony (en version 6), qu’à celui disposant déjà de connaissances en PHP et qui souhaiterait approfondir sa connaissance du framework. Partant des bases jusqu’à mener le lecteur progressivement vers des notions plus avancées, ce support ne nécessite aucune connaissance préalable dans le domaine du développement pour être lu.
Après une introduction sur la manière dont fonctionne un site web et sur les outils nécessaires pour le développer, l’auteur présente les notions de base essentielles du langage PHP : variables, fonctions, types, opérateurs de comparaison... Il approfondit ensuite son propos avec la notion de langage objet et la découverte des outils de gestion de dépendances comme Composer et Scoop.
Une fois les concepts fondamentaux de PHP présentés, le lecteur est ensuite invité à découvrir Symfony en commençant par la construction d’un site basique. Puis, petit à petit, il se familiarise avec des notions plus complexes telles que le routage, le moteur de templates Twig, l’utilisation de Webpack Encore, l’utilisation de Symfony Stimulus, l’installation de dépendances avec Symfony Flex, la gestion de bases de données avec Doctrine, les formulaires, la sécurité (y compris d’une API), les services ou encore l’utilisation de la classe Mailer, pour finir avec l’étude du déploiement d’une application.
À chaque étape, des exemples illustrent les concepts transmis, que le lecteur peut reproduire à l’aide du code source proposé en téléchargement sur le site www.editions-eni.fr, et une référence à la documentation Symfony est donnée pour aller encore plus loin dans l’exploration du framework.
1. Développer des applications web avec PHP et Symfony
La boîte à outils
1. Windows, Mac OS ou Linux ?
1.1 Windows
1.2 Linux
1.3 Mac OS
2. La relation client-serveur
3. Le serveur local
4. Visual Studio Code
Le langage PHP
1. Comment écrire du PHP ?
2. Les bases du langage : votre premier Hello World !
3. Les variables en PHP
4. Les déclarations de type en PHP
5. Les structures de contrôle
5.1 La structure de contrôle if
5.2 Variable booléenne
5.3 Structure de contrôle foreach
5.4 Opérateur ternaire
6. Les fonctions PHP
6.1 Paramètres d’une fonction
6.2 Valeurs par défaut des paramètres
6.3 Retour de fonction
6.4 Le typage des fonctions
6.4.1 Le typage des paramètres
6.4.2 Le typage du retour de la fonction
Le langage Objet
1. Introduction
2. Des objets en programmation
3. Les classes
4. Les objets
5. Les propriétés et les méthodes d’un objet
6. Pourquoi le langage est-il dit objet ?
7. L’objet $this
8. Les méthodes magiques
8.1 La méthode __toString()
8.2 Les méthodes __get () et __set() : portée des éléments
8.3 Les méthodes __construct et __destruct
9. Les espaces de noms
9.1 Un espace de noms, pour quoi faire ?
10. L’héritage de classe
11. La signature d’une méthode
12. Redéfinition d’une méthode
13. Portée des éléments dans les classes filles
14. Redéfinition du constructeur de la classe mère
15. Les constantes et les variables « static »
15.1 Les constantes
15.2 Les variables « static »
16. Les classes abstraites et les interfaces
16.1 Les classes abstraites
16.2 Les interfaces
17. Conclusion
Les nouveautés en PHP
1. Un zeste d'asynchrone : les fibres en PHP 8
2. Les autres nouveautés intéressantes en PHP 8
2.1 Les arguments nommés
2.2 Liste d’arguments à nombre variable
2.3 Déclaration de propriétés dans le constructeur d’une classe
2.4 Opérateur null sécurisé
2.5 Les chaînes de caractères (string)
2.6 Les types Union
2.7 Expression match
2.8 Autres améliorations
Les frameworks
1. Un framework : pour quoi faire ?
1.1 Quels sont les avantages ?
1.2 Quels sont les inconvénients ?
2. Les frameworks PHP
3. Le framework Symfony
3.1 Présentation du framework
3.2 La documentation
Les outils de gestion de dépendances
1. Introduction
2. Le gestionnaire de dépendances Composer
3. Variables d’environnement
4. Installation de Composer
5. Utilisation de Composer
6. Le gestionnaire de dépendances Scoop
Installation de Symfony
1. La bonne configuration
2. L'installation de l’installeur !
3. L'installation de votre projet Symfony
4. L'installation de Symfony avec Composer
5. L'installation d’une application Symfony allégée
6. Le test de l’installation
7. Le serveur local de Symfony
Configurer une application
1. Le fichier .env
1.1 Remplacement des variables d’environnement en local
1.2 La création d'une nouvelle configuration
Une première application
1. La structure de Symfony
2. Les contrôleurs
3. Les vues
4. Le dossier public
5. Le dossier var
6. Le dossier vendor
7. Les autres fichiers de l'application
8. Les composants de HttpFoundation
9. L'objet Request
10. L'objet Response
11. Les variables de session
11.1 L'utilité des variables de session
11.2 L'utilisation des variables de session sous Symfony
11.3 Les Flash Bags
Le routage
1. Organisation de l’application
2. Intérêt des routes
3. Routes sans annotations
4. Verbes des routes
5. Paramètres des routes
6. Paramètres conditionnels
7. Validation des paramètres
8. Liste des routes
Le moteur de template Twig
1. La syntaxe
2. L’héritage
3. L’inclusion de vue
4. L'utilisation des variables d’environnement
5. Les sessions et les Flash Bags dans Twig
5.1 Les variables de session
5.2 Les Flash Bags
6. L'inclusion du CSS et du JavaScript dans une vue
7. L'utilisation des routes dans la vue
8. Les filtres et les fonctions
8.1 Les filtres
8.2 Les fonctions
Webpack Encore
1. Introduction
2. Utilisation de Sass
3. Utilisation de Vue.js
4. Utilisation de app.css et app.js dans les vues
Symfony UX Stimulus
1. Introduction
2. Symfony UX
2.1 Principe de Symfony UX
2.2 Comment fonctionne Symfony UX pour installer les packages ?
2.3 Comment installer Symfony UX ?
2.4 Comment installer un composant Symfony UX ?
3. Symfony Stimulus
3.1 Comment utiliser Stimulus pour utiliser un composant ?
3.2 Comment utiliser Stimulus pour appliquer un composant ?
3.3 Symfony UX Stimulus avec React
4. HotWire et Turbo
4.1 Introduction
4.2 Le principe de HotWire
4.3 Symfony UX Turbo
La couche modèle avec Doctrine
1. Introduction
2. Les bases de données
3. Le langage SQL
4. L’ORM de Symfony : Doctrine
5. Les entités
6. Les migrations
7. Les fixtures
8. La récupération des données à partir de la base
9. Les méthodes du Repository
10. Le langage DQL
11. Le Query Builder
12. L'exécution des requêtes SQL
13. L'écriture d'une requête SQL et l'obtention des objets mappés
14. Les relations entre entités
15. Les relations OneToOne
16. Les relations ManyToMany
17. Les relations bidirectionnelles
18. Les relations bidirectionnelles avec attributs
19. Le Lazy Loading
20. Le Reverse Engineering
Les formulaires
1. Introduction
2. Form Builder
3. Formulaires externalisés
3.1 Définition
3.2 Utilisation du formulaire externe
4. Personnalisation de l'affichage d'un formulaire
5. Traitement des données du formulaire
6. Récupération des données de l’entité par défaut
7. Ajout des boutons de mise à jour dans la vue liste
8. Suppression d’une entité
9. Traitement de la jointure OneToOne
10. Traitement de la jointure ManyToMany
11. Type EntityType
12. Création de types de champs personnalisés
13. Validation des formulaires
13.1 Règles de validation
13.2 Service Validator
13.3 Asserts sur un accesseur
13.4 Contraintes de validation sur un Callback
13.5 Contraintes de validation sur la classe
13.6 Registration group
13.7 Création de ses propres contraintes
13.8 Personnalisation des messages d’erreurs : les fragments
La sécurité
1. Introduction
2. L’authentification
3. L’autorisation
3.1 access_control
3.2 Accès contrôleur
3.3 Accès action
3.4 Accès vue
4. La sécurité d’une API
4.1 Préparer la classe User
4.2 Créer la classe Authenticator
4.3 Configurer le fichier security.yaml
4.4 Ajouter des utilisateurs pour l’accès à l’API
4.5 Tester l’accès à l’API
L’internationalisation
1. Introduction
2. Le principe de la traduction
3. La variable locale
4. Les catalogues de traduction
5. Les éléments à traduire
6. Les variables dans les traductions
7. L'aide à la mise à jour des catalogues
8. L'organisation des catalogues
9. La gestion du pluriel
10. La traduction des messages des contraintes de validation
11. L'utilisation du nom de domaine
Les services
1. Rappel sur les espaces de noms
2. Notion de service
3. Utilisation des services
4. Création de son propre service
5. Injection d’un service dans un service
La classe Mailer
1. Installation et configuration
2. Envoi d’e-mails
3. Utilisation d’un template
Déployer son site en production
1. Introduction
2. Gestion des performances
2.1 Le cache HTTP
2.2 Mise en place des caches sur les contrôleurs
3. Utiliser un environnement de production
4. Vérifier la sécurité des dépendances
5. Préparer le serveur de production
6. Déployer votre application
6.1 Déploiement via FTP
6.2 Déploiement via des outils open source
6.3 Déploiement via le Cloud
Conclusion
Index
Yves ROCAMORA
Ingénieur en informatique diplômé de l’ENSIMAG, Yves ROCAMORA a exercé pendant une dizaine d’années des fonctions d’ingénieur informaticien dans le domaine des nouvelles technologies en agence et pour de grands comptes (Gaz de France, La Poste, RFI, Université Paris Diderot, Studios Eclair…). En 2015, il intègre le centre de formation Dawan en tant que formateur sur les technologies web. En 2020, il rejoint la société ORSYS en qualité d’ingénieur pédagogique au service Offre et Qualité, en charge du développement de l’offre « Technologies numériques ». Avec ce livre, il transmet aujourd’hui toute son expertise sur le développement web en PHP et le framework Symfony.