Vous êtes sur la page 1sur 58

FRAMEWORK

Présenté Par : Mahdi HAMZAOUI

11/04/2024 1
Qu’est ce qu’un
1

framework ? 3
1
C'est un ensemble de
cadre de travail bibliothèques et de
conventions permettant le
développement rapide
d'applications
2
4
C’est un espace de
travail modulaire Il fournit suffisamment de
briques logicielles et impose
5 suffisamment de rigueur pour
pouvoir produire une application
Ces composants sont organisés
aboutie et facile à maintenir.
pour être utilisés en interaction les
11/04/2024
uns avec les autres. 2
2

Objectif
‘‘ De simplifier le travail des développeurs
informatiques (les codeurs si vous préférez),
en leur offrant une architecture “prête à
l’emploi” et qui leur permette de ne pas
repartir de zéro à chaque nouveau projet. ’’

11/04/2024 3
Quel intérêt avez-vous à utiliser un Framework pour 3

votre projet ?
Rapidité
Une base de travail existe déjà, donc le développeur web
n’a pas besoin de partir de zéro pour créer votre site
web.
Flexibilité
Vous pouvez choisir d’utiliser ou non certains
composants du Framework pour améliorer le
référencement naturel de votre site..
Architecture
En utilisant un bon Framework, vous avez du code propre et
fonctionnel qui ne ralentit pas le fonctionnement du site.

Productivité
Que ce soit un développement en solo ou en équipe, un
Framework est un outil puissant puisque tout est parfaitement
organisé.
Communauté
Vous bénéficiez de l’appui de toute une communauté en ligne
11/04/2024
(support et forum) qui vous aidera à corriger les bugs ou résoudre
4
des problèmes de programmation.
Vocabulaire lié au Framework 4

l o p
Dé v e Appli Comp Cadr
pe m e n t i
we b
cation osants ciel

S o c o i t e à C a dr e
e
Can d’ l e B
a pp l i t i l s d’ ap p
va s c a ou l i
11/04/2024
c 5
5
Les différents types de framework
F. Infrastructure Système F. d'intégration
intergicielle
Pour développer des systèmes
Pour fédérer des applications
d'exploitation, des interfaces
hétérogènes. Pour mettre à
graphiques, des outils de
dispositions différentes
communication, (exemple : Framework
technologies sous la forme
.Net, Eclipse, NetBeans , Struts)
d'une interface unique.
(exemple : Ampoliros avec ses
interfaces RPC, SOAP, XML)
Pour développer des
applications spécifiques au
secteur d’activité de
l'entreprise.

F. orientés Système de
F. d'entreprise gestion de contenu
11/04/2024 6
Les principaux avantages de ces frameworks 6

sont : la standardisation du cycle de vie du logiciel


1. (Spécification, développement, maintenance, évolution)

2. formalisation d’une architecture adaptée au besoin de l'entreprise.

3. Ils tirent partie de l'expérience des développements antérieurs.

4. Ces frameworks sont en quelque sorte des progiciels extrêmement souples


et évolutifs.

5. La réutilisation des codes

6. 11/04/2024
la standardisation de la programmation 7
Exemples de frameworks 7

Apache Cocoon — un environnement servlet de développement JAVA/XML pour


le web, fondation Apache Software
Django — un Framework web open-source écrit en langage de programmation
Python
Eclipse — open-source de la fondation Eclipse Foundation Software
NetBeans — de la société Sun Microsystems
Microsoft .NET — de la société Microsoft
Ruby on Rails — un Framework web open-source écrit en langage de
programmation Ruby
Zope — un framework web open-source écrit en langage de programmation
Python
Symfony and zend — framework php
11/04/2024 8
8

Un Framework est Ils permettent donc de


une boite à outils pour gagner du temps lors du
un développeur web. développement du site.

Un Framework contient des Mais ce n’est pas

conclusion
composants autonomes qui uniquement une boite à
permettent de faciliter le outils. Framework peut
développement d’un site web aussi désigner une
ou d’une application. méthodologie.

Ces composants résolvent cette solution présente de


des problèmes souvent nombreuses fonctionnalités
rencontrés par les
pour faciliter le travail du
développeurs (CRUD,
arborescence, normes, développeur web, mais
sécurités, etc.). également d’optimiser et
améliorer la productivité.
11/04/2024 9
A SUIVRE
Simulation Du
11/04/2024 Framework Symfony
10
L’objectif de cette formation est
de faire un tour d’horizon de
Symfony à travers la création
d’une application concrète.

11/04/2024 11
Qu’est-ce que c’est Symfony?

Sur le site officiel du framework, Symfony se définit comme


ceci:
Symfony est un ensemble de composants PHP, un framework
d'application Web, une philosophie et une communauté. Tous
travaillant ensemble en harmonie.
Le framework Symfony intègre les meilleures pratiques de
développement pour des applications puissantes, extensibles et
faciles à maintenir.

11/04/2024 12
Symfony est un framework PHP qui vous permettra d'écrire une
application web de manière plus organisée avec une séparation de la logique
en plusieurs composants.
Symfony est le framework qu'il vous faut !
Il contient tout ce dont vous avez besoin pour mener à bien votre projet :
un moteur de gabarit TWIG.
un ORM .
un client de test .
et bien d'autres fonctionnalités que vous découvrirez lors de ce cours.
En réalisant un site web complet, vous apprendrez à intégrer des vues
avec le moteur de gabarits Twig, à manipuler une base de données à
l'aide de l'ORM Doctrine et à interagir avec vos utilisateurs à l'aide
de formulaires parfaitement intégrés et validés.
11/04/2024 13
Les bases à avoir pour faire du Symfony
• Si c’est votre début avec le framework Symfony, il faut savoir qu’il
vous faut de bases solides en PHP pour pouvoir travailler avec le
framework.
• Quand vous travaillez avec un framework, n’importe quel framework,
il faut savoir qu’il est écrit dans un langage de programmation
spécifique: PHP pour Symfony et Laravel, Python pour Django, …
• Il faut savoir que vous écrivez donc du code PHP dans le cas de
Symfony et n’oubliez jamais cela.
• Pour faire du Symfony, il vous faut donc une bonne connaissance de
la Programmation Orienté Objet en PHP et aussi des Namespaces.
11/04/2024 14
Outils nécessaires :
Symfony
PHP
MySQL
Doctrine ORM
Twig

11/04/2024 15
Vocabulaire
Bundle
 Ce terme sera un des plus utilisés lors du travail avec le framework symfony.
 Un bundle est en quelques sorte un module ou une fonctionnalité.
 c’est le coeur de symfony
 lui-même est développé à partir d'un ensemble de bundles.
Doctrine
 Doctrine est une librairie php qui n'a pas été développée par les éditeurs de
symfony.
 En outre, c'est la librairie de gestion de base de données la plus mise en
avant pour les développements symfony.
 C'est d'ailleurs celle que nous allons utiliser tout au long de cette formation.

11/04/2024 16
Fixture : Ce sont des bouts de scripts que l'on peut lancer en mode
commande et qui
vont générer un ensemble de données de départ dans la base de
données.
Si par exemple on veut fournir un ensemble de données pour
certaines tables systèmes dans une application, on peut les créer à
partir d'un script de fixtures.
Twig
Comme doctrine, twig est une librairie qui n'est pas propre à symfony, il
s'agit là d'un système de template pour les applications PHP.
Il existe 3 possiblités en symfony de créer nos vues : En PHP, en XML ou
en TWIG.
Dans cette formation nous allons nous concentrer sur les templates en
Twig
11/04/2024 17
Yaml: acronyme de Yet Another Markup Language (« YAML n’est pas un
langage de balisage ») .c’est un format de représentation de données par
sérialisation Unicode. Il reprend des concepts d'autres langages comme
XML.
Son objet est de représenter des informations plus élaborées que le
simple CSV en gardant cependant une lisibilité presque comparable, et
bien plus grande en tout cas que du XML.

Namespaces: ou espace de nom l'utilisation des namespaces se fait


donc pour éviter les conflits. Si vous utilisez différentes bibliothèques, il
peut être intéressant de les encapsuler dans des namespaces afin que
celles-ci n'entrent pas en conflit. Pour une petite application faite maison,
cela n'est pas forcément très utile, mais à partir du moment où vous
utilisez des constantes, fonctions ou classes d'un autre script, n'hésitez
pas à les isoler.
11/04/2024 18
Le modèle MVC
• Symfony est un framework basé sur le modèle MVC (Model View Controller).
• Pour faire simple, le modèle MVC va nous aider à séparer les requêtes de la
base de données (Model) de la logique relative au traitement des demandes
(Controller) et au rendu de la présentation (View).

11/04/2024 19
11/04/2024 20
• Le modèle: Le rôle du modèle va être la liaison avec les données généralement
présentes dans une base de données. Il va offrir des méthodes pour manipuler
ces données comme la récupération, l’insertion, la suppression ou encore la mise
à jour.
• Le contrôleur: Le contrôleur est la partie principale de l’architecture, car c’est lui
qui va faire le lien entre l’utilisateur, le modèle et la vue. Quand l’utilisateur
souhaite afficher une page, c’est le contrôleur qui va recevoir cette requête, il va
se charger ensuite de récupérer les données via le modèle, manipuler celles-ci
(tri, filtrage, condition, etc ..) pour les envoyer « prête à l’emploi » à la vue qui
sera affichée à l’utilisateur.
• La vue: La vue a un nom assez transparent, son rôle c’est l’affichage, elle reçoit les
variables et se contente de les afficher au sein du code HTML. Généralement les
frameworks utilisant une architecture MVC, adopte un moteur de template
comme Twig ou Smarty, mais on en reparlera plus tard . La bonne pratique veut
qu’aucun calcul ou manipulation de variable ne soit effectué dans la vue,
seulement
11/04/2024
des boucles et des conditions pour l’affichage. 21
Composer
• Composer est un outil de gestion de dépendances PHP. Il va nous
permettre de déclarer les librairies dont notre projet dépend et s’occuper
de les gérer (installation/mis à jour) pour nous.
• Quand vous travaillez sur un grand projet PHP, il arrive pour éviter de
recréer la roue et aller plus vite dans le développement de votre
application, d’utiliser des librairies externes comme pour la gestion de vos
utilisateurs ou un système d’envoie de mails, Composer va donc vous
permettre de gérer toutes vos dépendances sans trop se casser la tête.
• Installation de Composer
Normalement, PHP 7.1 doit déjà être installé sur votre environnement de
travail, car c'est un prérequis pour ce cours.
Nous allons installer Composer sur notre ordinateur. Nous pouvons
l'installer
11/04/2024
de la même façon, quel que soit notre système d'exploitation,22dès
Ensuite, vérifiez rapidement que PHP et Composer sont bien
disponibles dans votre invite de commande :

Ces deux commandes doivent retourner un résultat.


11/04/2024 23
Installation de Symfony
• Maintenant que vous avez installer composer, et que vous savez ce
qu’est Symfony, nous allons procéder à l’installation du framework
Symfony. Dans cette formation, nous allons utiliser la version 5 de
Symfony
• Pour installer Symfony, nous pouvons soit utiliser composer ou
l’installateur Symfony, nous allons utiliser ici composer et vous devez
aussi le privilégié par rapport à l’installateur Symfony. Entrer donc
cette ligne commande en vous plaçant dans le dossier dans lequel
vous voulez créer votre projet:

$ composer create-project symfony/website-skeleton blog


11/04/2024 24
• Ceci va créer le dossier blog qui va contenir votre projet et installer
toutes les dépendances de base d’une application web ordinaire
comme le moteur de templates Twig.
• Si vous avez juste besoin de créer une API, vous n’aurez pas besoin de
toutes ces dépendances, Symfony a aussi pensé à vous, il suffit de
faire:

$ composer create-project symfony/skeleton blog

Avec cette installation, vous installez juste les dépendances basiques, pas
besoin de moteur de templates.
Nous allons utiliser la première avec symfony/website-skeleton parce que
nous créons une application web ordinaire.
11/04/2024 25
Maintenant que notre projet a été créé, déplacez vous dans le dossier du projet
et lancer le serveur
$ cd blog
$ php bin/console server:run

Si tout va bien, vous devez obtenir

11/04/2024 26
Si vous avez une erreur qui vous dit que la commande
server:run n'est pas défini, il faut donc installer un
serveur de développement en faisant:

$ composer req server

Nous disons à Symfony que nous avons besoin d'un serveur de


développement, il va donc nous télécharger le package symfony/web-
server-bundle et l'ajouter à nos dépendances, tout cela est fait avec
Symfony flex.
11/04/2024 27
Vous pouvez maintenant essayer la commande server:run de
tout à l'heure ou la commande server:startcomme ceci:

$ php bin/console server:run

Normalement ça marche avec maintenant.


Ouvrez donc votre navigateur et naviguer sur l’adresse
http://127.0.0.1:8000, votre navigateur doit ressembler à cela

11/04/2024 28
Tout va bien, vous pouvez continuer.

11/04/2024 29
Architecture des dossiers
Si vous venez de Symfony, vous voyez tout de suite la différence.
Expliquons un peu comment tout ça est organisé:
• bin: c’est ici que se trouve les exécutables de Symfony, comme le
fichier console. Les fichiers dans ce dossier seront donc exécutables en
ligne de commande.
• config: comme son nom l’indique, ce dossier va contenir la
configuration de notre application Symfony. C’est ici que nous allons
configurer les routes, les services, …
• public: Ceci est le dossier d’entré de notre application, mais aussi le
dossier public, nous allons y mettre tout les fichiers accessibles au
public. Il contient notamment le contrôleur frontal de Symfony.
11/04/2024 30
• src: C’est ici que la magie s’opère, c’est ici que vous écrirez vos fichiers
PHP. Les contrôleurs, entités, migrations, … sont dans ce dossier.
• templates: Les vues de notre application sont ici, toutes les pages qui
vont être affichées à l'écran vont être ici.
• tests: C’est ici que vous allez mettre les différents tests pour tester
vos fonctionnalités.
• var: Dans ce dossier Symfony va mettre les caches et logs
• vendor: Ce dossier contient toutes les dépendances créées avec
composer.
• .env: Ce fichier définit les variables d’environnement de notre
application, il définit l’environnement dans lequel nous sommes,
développement ou production, les informations de connexion à la
BDD, ...
11/04/2024 31
11/04/2024 32
Petit aperçu de quelques éléments
Avant de commencer à écrire du code, j’aimerais qu’on parle de
quelques éléments autour de Symfony, histoire de ne pas se perdre.
php bin/console
Si vous vous rappelez bien, c'est la commande que nous avons écrit
tout à l'heure pour lancer le serveur. Celui ci représente en quelque
sorte la ligne de commande de Symfony, elle va par exemple nous
permettre de créer nos contrôleurs, créer des entités, des migrations
et plein d'autres. Pour voir toutes les commandes possibles, il suffit
de faire: $ php bin/console
Nous avons alors la liste de toutes les commandes disponibles, vous pouvez
donc lire la documentation de chaque commande et essayer de comprendre ce
qu'elle fait.
11/04/2024 33
Symfony Flex
• Symfony Flex est un moyen d’installer et de gérer des applications Symfony.
Il automatise les tâches les plus courantes des applications Symfony.
Il a été lancé avec la version 4 de Symfony.
• Flex est un plugin composer qui modifie le comportement des
commandes require, update et remove. Par exemple, lorsque nous exécutons
la commande require, l'application adresse une demande au serveur de
Symfony Flex avant d'essayer d'installer le package avec composer. S'il n'y a
aucune information sur le paquet que nous voulons installer, le serveur Flex ne
renvoie rien et l'installation du paquet suit la procédure habituelle basée sur
Composer. S'il y a des informations, Flex les renvoie dans un fichier appelé
"recette" (recipes) et l'application l'utilise pour décider quel package installé et
quelles tâches exécutées automatiquement après l'installation.
11/04/2024 34
Doctrine
Doctrine est ce qu’on appelle un ORM (Object Relational
Mapper), pour faire simple, il va nous permettre de créer,
modifier, supprimer ou récupérer des objets dans la base de
données en utilisant des classes.

11/04/2024 35
11/04/2024 36
Contrôleur
L’un des composants de l’acronyme MVC, le contrôleur est une
classe PHP que nous allons créer et qui va permettre de lire
une requête et renvoyer une réponse, c’est tout son
fonctionnement, recevoir une requête et retourner une
réponse

11/04/2024 37
11/04/2024 38
Route
La route représente le lien entre une URL et un contrôleur.
Quand le serveur reçoit une requête HTTP, symfony regarde
dans le fichier config/routes.yaml pour trouver la route, et
cette route va définir le contrôleur a appelé dans ce cas.

11/04/2024 39
Requêtes et réponses (HTTP)
Un utilisateur envoie une requête au serveur...
HTTP veut dire protocole de transfert hypertexte. C'est un ensemble de règles
qui permettent à 2 machines de communiquer sur le réseau internet. Le schéma
suivant explique ce qu'il se passe au niveau du réseau quand un utilisateur
accède à un lien à l'aide d'un navigateur web

11/04/2024 40
Il existe plusieurs méthodes HTTP pour accéder à une ressource, voici
les plus importantes: GET, POST, PUT et DELETE.
.. et le serveur retourne une réponse
Une fois que le serveur sait exactement quelle ressource l'utilisateur
(on dit parfois "client") souhaite et sous quelle forme, il peut
retourner ce résultat sous forme de réponse HTTP, tel qu'illustré dans
le schéma suivant

11/04/2024 41
Le framework Symfony est construit autour du paradigme fondamental du web :
un utilisateur fait une requête et le serveur (ici, Symfony) doit retourner une réponse.
Le composant HttpFoundation fournit une abstraction PHP objet pour la requête et la
réponse.
Le composant HttpKernel a la responsabilité de récupérer la requête de l'utilisateur et
de renvoyer une réponse.
Dans la très grande majorité des applications, la réponse du serveur sera différente selon
l’URL à laquelle il sera accédé et fera appel à une fonction différente pour retourner un
résultat.

Créer votre page d’accueil


Pour créer une page avec Symfony, il faut remplir ces deux conditions:
créer une route
créer un contrôleur

11/04/2024 42
Créer une route
Pour créer une route, vous avez besoin de:
• son nom: comme une variable en fait, pas d’espace,
remplacer les espaces par des underscores (_)
• son chemin: le chemin est ce qui va s’afficher dans le
navigateur du client, (/tutorial, /a-propos, /accueil, …) la
aussi éviter les espaces, utiliser plutôt le tiret à la place (-)
• son contrôleur: une méthode PHP qui va traiter la requête
de l’utilisateur et lui renvoyer une réponse
11/04/2024 43
Rendez-vous dans le fichier config/routes.yaml et mettez-y ce code:

homepage:
path: /
controller: App\Controller\BlogController::index

Nous créons une route qui s’appelle homepage dont le chemin est /
et qui a comme contrôleur la méthode index qui se trouve dans la
classe BlogController.

Allons donc créer ce contrôleur et faire le lien avec notre route.

11/04/2024 44
Contrôleur frontal
Le contrôleur frontal est le fichier d’entré de notre
application, toute requête va passer par ce fichier avant de
continuer.
Le contrôleur frontal de Symfony se situe
dans public/index.php il réceptionne donc toutes les requêtes
qui arrivent à notre application et renvoie la réponse
adéquate au client.

11/04/2024 45
Créer un contrôleur
Pour créer un contrôleur, nous pouvons soit aller nous même créer
la classe ou passer par la ligne de commande. Je suis un peu
fainéant nous allons donc passer par la ligne de commande.
$ php bin/console make:controller BlogController
Nous demandons à Symfony de nous créer le contrôleur BlogController

11/04/2024 46
C'est clair la je pense, 2 fichiers ont été créés,
BlogController.php dans src/Controller et
index.html.twig dans templates/blog,
nous allons pas toucher pour l'instant.
Ouvrons maintenant le fichier
src/Controller/BlogController.php

11/04/2024 47
11/04/2024 48
• Symfony nous a créé le contrôleur, et a même défini une
route en utilisant ce qu’on appelle des annotations.
• En Symfony, nous pouvons définir nos routes soit en
utilisant des annotations, un fichier yaml, un fichier xml
ou avec du PHP. Personnellement je préfère utiliser un
fichier yaml pour définir mes routes, nous allons donc
supprimer la docstring qui se trouve avant la
fonction index() et aussi effacer le use qui importe les
annotations sur la ligne 6, puis retourner une réponse
tout simplement. Voici le code du fichier
BlogController.php à l’instant.
11/04/2024 49
11/04/2024 50
• Nous retournons un objet Response avec du HTML qui
affiche Hello World!
• On enregistre et nous pouvons maintenant aller
actualiser notre page dans le navigateur, si tout
marche bien, on soit obtenir ce qui se trouve sur cette
image:

11/04/2024 51
11/04/2024 52
Retourner une page HTML
• Le moteur de template de Symfony est Twig.
Mais pourquoi utiliser un moteur de templates?
• En temps normal, si nous voulons afficher du code dynamique
en PHP, nous écrivons du PHP entre du code HTML, si vous
l’avez déjà fait, vous devez savoir combien c’est difficile de se
retrouver dans un tel code et surtout combien c'est compliqué
de le maintenir.
• Pour parcourir un tableau d’objets et l’afficher en PHP on va
devoir faire:

11/04/2024 53
11/04/2024 54
• L’autre intérêt avec Twig c’est sa rapidité, tout les templates
sont compilés en PHP et mis en cache, seulement quand vous
changez le code d’un template, Twig le recompile et le met
encore en cache, ce qui est très pratique en production.
• Le dossier templates à la racine contient tous les templates que
nous allons développer pour notre application, si vous
regardez, vous devez voir un dossier blog, ce dossier à été créer
lorsque nous avons généré le contrôleur, à l'intérieur de ce
dossier se trouve le fichier index.html.twig que nous allons
afficher à l’utilisateur.

11/04/2024 55
11/04/2024 56
11/04/2024 57
11/04/2024 58

Vous aimerez peut-être aussi