Vous êtes sur la page 1sur 19

PHP

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

2021/2022 PHP - MVC 2


Plan

I. Contexte
II. Principes
III. Architecture MVC
IV. Exemple

2021/2022 PHP - MVC 3


Contexte (1)

• Principe de séparation du code


• HTML structuration statique
• CSS présentation
• PHP génération dynamique
• SQL gestion des données
• Motivation
• Maintenance facilitée
• Lisibilité du code
• Limitation des impacts des modifications
• Réutilisation

2021/2022 PHP - MVC 4


Contexte (2)

• Méthodes de séparation
• CSS pour le style
• Fonctions/procédures PHP
• Gabarits
• Architecture Modèle-Vue-Contrôleur (MVC)
• Trygve Reenskaug, 1978

2021/2022 PHP - MVC 5


Plan

I. Contexte
II. Principes
III. Architecture MVC
IV. Exemple

2021/2022 PHP - MVC 6


Principes

Source : openClassrooms

2021/2022 PHP - MVC 7


Plan

I. Contexte
II. Principes
III. Architecture MVC
A. Modèle
B. Vue
C. Contrôleur
IV. Exemple

2021/2022 PHP - MVC 8


A. Modèle

• 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

2021/2022 PHP - MVC 9


B. Vue

• Rôle
• Présentation des résultats
• Interaction avec utilisateurs
• Langages
• HTML
• Uniquement si utilisation de gabarit
• PHP simple
• Sinon

2021/2022 PHP - MVC 10


C. Contrôleur

• Rôle
• Traitement des requêtes des utilisateurs
• Interrogation ou mises à jour à l’aide du modèle
• Modification de la vue
• Langage
• PHP

2021/2022 PHP - MVC 11


Plan

I. Contexte
II. Principes
III. Architecture MVC
IV. Exemple
A. Sans décomposition
B. Modèle
C. Vue
D. Contrôleur

2021/2022 PHP - MVC 12


A. Sans décomposition (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>

2021/2022 PHP - MVC 13


A. Sans décomposition (2)

<?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>

2021/2022 PHP - MVC 16


C. Vue (2)

<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");
?>

2021/2022 PHP - MVC 18


Bibliographie

• A. Delhay-Lorrain, cours web serveur, IUT de Lannion


• J. Darmont, cours de programmation web, Université de Lyon 2
• http://openclassrooms.com

2021/2022 PHP - MVC 19

Vous aimerez peut-être aussi