Chapitre 2 - Vue d’ensemble d’un Framework Symfony 6 - 2024/2025 PDF
Document Details
Uploaded by FragrantConnotation
Honoris United Universities
2024
Tags
Summary
Ce document présente un aperçu du framework Symfony 6, y compris ses avantages et son architecture. Il détaille également la mise en place d'une application Symfony et son fonctionnement.
Full Transcript
Chapitre2: Vue d’ensemble d’un FrameWork Symfony 6 UP Web AU: 2024/2025 Plan 1. C’est quoi un Framework ? 2. Introduction au Framework Symfony 3. Mise en place d’une application Symfony 4. Architecture d’une application Symfony 5. Le fonctionnement d'une...
Chapitre2: Vue d’ensemble d’un FrameWork Symfony 6 UP Web AU: 2024/2025 Plan 1. C’est quoi un Framework ? 2. Introduction au Framework Symfony 3. Mise en place d’une application Symfony 4. Architecture d’une application Symfony 5. Le fonctionnement d'une application Symfony 2 1. C’est quoi un Framework ? 3 1.1. Définition Ensemble de bibliothèques, d'outils et de Web App bonnes pratiques Framework Structure de base pour le développement d'applications Data Science Mobile dev Framework Réutilisabilité : Code standardisé pour tâches Framework courantes Architecture préétablie (ex : MVC) pour organiser le code Efficacité accrue : Réduit le temps de Game dev Testing développement Framework Framework Standardisation : Encourage les bonnes pratiques et la cohérence Entreprise Framework 4 1.2. Avantages ⮚ Portabilité : L’abstraction de la base de données et du cache permet à votre application d’être utilisée sur de nombreuses configurations de serveurs différents ⮚ Temps de développement plus court : Puisque vous n’êtes pas obligé de réécrire le code sur la gestion des utilisateurs, et même de l’authentification, de l’accès à la base de données et aux formulaires, le temps de développement ce réduit considérablement ⮚ Sécurité des applications : Les fonctions de sécurité comme l’authentification et les autorisations sont gérées par le framework 5 1.2. Avantages ⮚ Soutenue par la communauté : Les frameworks ont des forums, des listes de diffusion et des canaux IRC (Internet Realy Chat) pour les soutenir ⮚ Plugins et modules : Un bon nombre de membres de la communauté développent des plugins et des modules que vous pouvez télécharger et utiliser dans votre application ⮚ Règles de codage stricts : La plupart des frameworks vous forcent à suivre des principes de codage, notamment le modèle MVC 6 1.3. Exemples des frameworks PHP 7 1.4. Comparaison des Frameworks Cette figure illustre que Laravel est le framework PHP le plus utilisé à l'échelle mondiale. 8 1.4. Comparaison des Frameworks Cette figure montre que symfony est le framework PHP le plus utilisé en France. 9 2. Le FrameWork Symfony v6 10 2.1. Définition Lancé en 2005 par SensioLabs, Symfony est aujourd'hui un framework stable, reconnu apprécié à l’international. SensioLabs, fondée il y a 12 ans par Fabien Potencier et son équipe, est une agence we l’origine de Symfony. Le framework bénéficie également d'une communauté active composée de développe intégrateurs, utilisateurs, et autres contributeurs, qui participent à son enrichissement continu Fabien Potencier 11 2.2. Exemples d'app Symfony 12 2.3. Les différentes versions 13 2.4. L'architecture Symfony Symfony est un framework basé sur le modèle MVC (Model View Controller). Le contrôleur : Permet de traiter la requête de l’utilisateur et de générer une réponse ( intermédiaire entre la vue et le modèle ) Le modèle : Permet de gérer les données et résponsable de la logique métier La vue : Permet d'afficher les données qu'elle a récupérées auprès du modèle. Le modèle MVC va nous aider à séparer les requêtes de la base de données (Modèle), de la logique relative au traitement des demandes (Contrôleur), et à l’affichage (Vue). 14 2.4. L'architecture Symfony 15 3. Mise en place d’une application Symfony 16 3.1. Mise en place de l'env Avant de créer votre première application Symfony, vous devez : Installer PHP 8.1 ou une version supérieure (nous recommandons XAMPP) Installer Composer Installer l'outil en ligne de commande Symfony (Symfony CLI) Vérifier votre environnement: //verify in the installed version of php $php –v //Verify the installed version of composer $composer –v 17 3.1. Création d'un projet Ouvrez votre terminal et exécutez cette commande pour créer une nouvelle application Symfony : $ composer create-project symfony/skeleton:"6.4.*" my_project $ cd my_project_directory $ composer require webapp Ou utilisez le cli symfony: $symfony new my_project_directory --version="6.4.*" --webapp 18 3.1. Création d'un projet Maker Bundle Ouvrez votre terminal, accédez à votre nouveau répertoire de projet, puis installez le Maker Bundle pour le mode développement comme suit : $composer require symfony/maker-bundle --dev La dépendance makerBundle permet de créer des commandes vides, des contrôleurs, des classes de formulaire, des tests etc… 19 3.1. Création d'un projet Maker Bundle Ce tableau montre les commandes courantes fournies par MakerBundle. Ces commandes vous aident à créer rapidement les composants de votre application Symfony en suivant les meilleures pratiques: command description $make:controller Generates a new controller class $make:entity Generates a new Doctrine entity class $make:form Generates a new form class $make:crud Generates a full CRUD interface for a Doctrine entity $make:migration Generates a new migration class based on changes to your Doctrine entities. $make:user Generates a new User class with security settings. 20 3.2. L'exécution Ouvrez votre terminal, placez-vous dans le répertoire de votre nouveau projet et démarrez le serveur web local comme suit : $ cd my-project/ $ symfony server:start Or $ php bin/console server run 19 3.3. L'architecture du projet Dossiers principaux: assets Contient les fichiers sources des assets (JavaScript, CSS, images) utilisés dans l'application. Ces fichiers peuvent être compilés et minifiés avant d'être déplacés dans le dossier public/. 20 3.3. L'architecture du projet Dossiers principaux: bin Contient des exécutables pour effectuer des opérations C'est notament d'ici que viennent les commandes de la console symfony que l'on utilisera au cous du projet Nous n'irons jamais toucher à quoi que ce soit dans dossier, vous pouvez l'oublier dans votre routine de développeur 21 3.3. L'architecture du projet Dossiers principaux: config Contient toute la configuration de votre site (framework Symfony + bundles) 22 3.3. L'architecture du projet Dossiers principaux: migrations Contient les différentes versions des schémas de notre application On y retrouve les scripts SQL permettant de générer une structure de données en correspondances avec nos entités (Les objets stockés en base de données) 23 3.3. L'architecture du projet Dossiers principaux: public C'est la racine de notre serveur web. Il contient le contrôleur frontal "index.php". Il s'agit du point d'entrée de votre site. C'est le fichier par lequel passent toutes vos pages. Quand vous accédez à votre site avec l'url http://localhost:8000, Symfony va en fait se placer dans le dossier public afin de charger le fichier "index.php" C'est le seul réparatoire qui devrait être accessible à nos visiteurs, d’où son nom : "public". 24 3.3. L'architecture du projet Dossiers principaux: src Contient le code source / le code métier propre à note application. C'est dans ce dossier que nous allons passer le plus de temps. Initialement il contient le fichier kernel.php qui est le noyau à l'origine du fonctionnement de framework. 25 3.3. L'architecture du projet Dossiers principaux: templates Contient les interfaces et éléments d'interfaces graphiques de notre site web: -le layout global de notre site web - les pages 26 3.3. L'architecture du projet Dossiers principaux: tests Tous les tests dans Symfony sont situés sous le répertoire test/du projet. Dans Symfony et plus globalement en développement, on distingue 2 types de tests automatisés: - Les tests unitaires: ils vérifient que chaque méthode et chaque fonction fonctionne correctement. Chaque test doit être aussi indépendant que possible des autres. - Les tests fonctionnels: Ils vérifient que l'application se comporte correctement dans son ensemble. 27 3.3. L'architecture du projet Dossiers principaux: translations Contient les fichiers de traduction dans le cas de sites multilingues. 28 3.3. L'architecture du projet Dossiers principaux: var Contient les fichiers de cache, les logs, et d'autres fichiers nécessaires au bon fonctionnement de Symfony. 29 3.3. L'architecture du projet Dossiers principaux: vendor Contient les bibliotèques et leurs dépendances que nous utilisons dans notre application (installées avec Composer). C'est un ensemble de fichier de code, une sorte de boite noire qui remplit une ou plusieurs fonctionnalités bien précises que nous allons pouvoir utiliser dans notre code. Par exemple, la bibliothèque CKeditor permet de transformer un champ de saisie en éditeur. On ne sait pas comment elle fonctionne (principe de la boite noire) mais on sait comment s'en servir. 30 3.3. L'architecture du projet Fichiers à la racine:.env Symfony, comme de nombreux autres frameworks possède de base 3 environnements de travail: 1. Env dev 2. Env test 3. Env prod Le fichier.env conteint les informations relatives à chaque env: DATABASE_URL: pour spécifier les information de cnx à une BD MAILER_DSN: pour spécifier les informations de cnx à un systèe de mail APP_ENV: pour modifier l'environnement de travail 31 3.3. L'architecture du projet Fichiers à la racine: Composer.json Le fichier composer.json contient plusieurs informations sur le projet, dont la liste des libraries utilisées. Composer est ensuite capable de télécharger automatiquement ces librairies et les dépendances associées puis de générer un autoloader pour les utiliser simpleme,t dans vos projets de site avec PHP. 32 3.3. L'architecture du projet Fichiers à la racine: Composer.lock Le fichier composer.lock indique les packages installés, en précisant le hash précis de la version. C'est une sorte de snapshot de la version actuelle de votre projet. 33 4. Fonctionnement d’une application Symfony 36 4.1. Caractéristiques Twing ORM MVC pattern templating integration implementation engine doctrine Dependency Event driven Documentation Injection archietcture and community 37 4.2. Fonctionnement Schéma bilan Rose: Le routeur nous permettra de configurer nos routes Violet: les contrôleurs, modèle et vues seront codés par nous Noir: on ne s'occupe pas d'eux, il font très bien le job sans nous :) 38 4.2. Fonctionnement contrôleur frontal Le contrôleur frontal est le point d’entrée unique de l’application. C'est le fichier par lequel passent toutes vos pages. Le contrôleur frontal se situe dans le répertoire «public », on l’appelle aussi « index.php ». Le contrôleur frontal s'occupe de l'envoi de la demande (requête) en appelant le noyau (kernel) de Symfony pour avoir finalement la réponse. 39 4.3. Symfony Flex Symfony Flex est un plugin Composer. Il permet d'exécuter des tâches sur certaines commandes Composer (require, update et remove). Il permet d’automatiser l’installation et la suppression des dépendances en fournissant une configuration par défaut sans avoir à aller lire le fichier pour trouver quelle configuration écrire ou autre tâche à effectuer 40 4.3. Symfony Flex Exemple: Nous souhaitons installer une API REST. Il faut lancer donc la commande «composer require api» Cette commande suffit pour mettre en place une API REST fonctionnelle. L’application envoie une requête au serveur Symfony Flex avant d’installer le paquetage avec Composer. « Symfony Flex » va se charger lui-même : D’enregistrer le bundle dans le « Kernel » De fournir une configuration par défaut De charger les routes nécessaires , etc. Flex laisse une trace des recettes qu'il a installé dans un fichier appelé « symfony.lock ». Ces recettes contiennent des instructions pour indiquer à Flex ce qu’il doit faire pour 41 chaque paquet. 4.3. Symfony Flex Symfony Flex permet de: Configurer automatiquement le paquetage dans le projet. Supprimer toutes les configurations relatives au paquetage, quand vous le supprimez Les alias permettent à Flex d’installer des paquetages en utilisant des noms courts et facile à retenir. Si on revient à l’exemple précédent: composer require api, le paquetage «api» n’existe pas pour composer. Dans ce cas, Flex intervient pour détecter si le nom du paquetage correspondre à un allias. Si oui, le composer installe le paquetage correspondant. Exemple d’allias: Admin, Log, Orm,etc… 42 À faire: Atelier 1 & Atelier 2 43 Références http://symfony.com/ 43