Académique Documents
Professionnel Documents
Culture Documents
Architecture Modèle-Vue-Contrôleur
Laurent d’Orazio
Université de Rennes 1 – IRISA
2021-2022
Plan
I. Contexte
II. Principes
III. Architecture MVC
IV. Exemple
I. Contexte
II. Principes
III. Architecture MVC
IV. Exemple
• Méthodes de séparation
• CSS pour le style
• Fonctions/procédures PHP
• Gabarits
• Architecture Modèle-Vue-Contrôleur (MVC)
• Trygve Reenskaug, 1978
I. Contexte
II. Principes
III. Architecture MVC
IV. Exemple
Source : openClassrooms
I. Contexte
II. Principes
III. Architecture MVC
A. Modèle
B. Vue
C. Contrôleur
IV. Exemple
• Rôle
• Gestion des données
• Bases de données
• Fichiers
• Composition
• Ensemble de fonctions et de classes
• Mises à jour
• Insertion
• Modification
• Suppression
• Interrogation
• Langages
• PHP, SQL
• Rôle
• Présentation des résultats
• Interaction avec utilisateurs
• Langages
• HTML
• Uniquement si utilisation de gabarit
• PHP simple
• Sinon
• Rôle
• Traitement des requêtes des utilisateurs
• Interrogation ou mises à jour à l’aide du modèle
• Modification de la vue
• Langage
• PHP
I. Contexte
II. Principes
III. Architecture MVC
IV. Exemple
A. Sans décomposition
B. Modèle
C. Vue
D. Contrôleur
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>PHP CM5</title>
<meta charset="UTF-8">
<meta name="description" content="PHP CM5">
<meta name="keywords" content="MVC">
<meta name="author" content="Laurent d'Orazio">
</head>
<body>
<table>
<caption>Liste d'enseignants</caption>
<tr><th>num</th><th>prenom</th><th>nom</th></tr>
<?php
require("parametres_connexion.php");
$conn=new PDO("pgsql:host=$serveur;dbname=".$base, $utilisateur, $passe);
$reponse = $conn->query('SELECT * FROM ecole.profs');
$donnees = $reponse->fetchAll(PDO::FETCH_ASSOC);
foreach($donnees as $prof){
echo'<tr>';
foreach($prof as $value){echo "<td>$value</td>";}
echo '</tr>';
}
?>
</table>
</body>
</html>
2021/2022 PHP - MVC 14
B. Modèle
<?php
function connexion(){
require("parametres_connexion.php");
$conn = new PDO("pgsql:host=$serveur;dbname=".$base, $utilisateur, $passe);
return $conn;
}
function getProfs(){
$conn=connexion();
$reponse = $conn->query('SELECT * FROM ecole.profs');
$profs = $reponse->fetchAll(PDO::FETCH_ASSOC);
return $profs;
}
?>
2021/2022 PHP - MVC 15
C. Vue (1)
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>PHP CM5</title>
<meta charset="UTF-8">
<meta name="description" content="PHP CM5">
<meta name="keywords" content="MVC">
<meta name="author" content="Laurent d'Orazio">
</head>
<body>
<table>
<caption>Liste d'enseignants</caption>
<tr><th>num</th><th>prenom</th><th>nom</th></tr>
<?php
foreach($profs as $prof){
echo'<tr>';
foreach($prof as $cle=>$valeur){echo"<td>$valeur</td>";}
echo '</tr>';
}
?>
</table>
</body>
</html>
2021/2022 PHP - MVC 17
D. Contrôleur
<?php
include("php_cm4_modele.php");
$profs=getProfs();
include("php_cm4_vue.php");
?>