L’architecture MVC
Achref El Mouelhi
02 Novembre 2017, POEC PHP 2017 1 / 12
MVC : c’est quoi ?
C’est un design pattern
En français : Modèle-Vue-Contrôleur
En anglais : Model-View-Controller
Historique
introduit par Trygve Reenskaug en 1978
utilisé pour la première fois par Smalltalk en 1980
02 Novembre 2017, POEC PHP 2017 2 / 12
MVC
Principe
permet de bien organiser son code source
permet de savoir quel rôle joue précisément chaque fichier dans
l’application
consiste à séparer la logique du code en trois parties, modèle
(modèle de données), vue (présentation, interface utilisateur) et
contrôleur (logique de contrôle, gestion des événements,
synchronisation...)
02 Novembre 2017, POEC PHP 2017 3 / 12
MVC
C’est-à-dire
Modèle : la partie qui concerne les données (base de données,
fichiers...) de notre application (site...). Il dispose de toutes les
méthodes d’accès aux données (insert, delete, update, select)
Vue : la partie qui concerne l’affichage : l’interface avec laquelle
l’utilisateur interagit (page HTML...). C’est la vue qui s’occupe de
la visualisation des données retournées par le modèle
Contrôleur : c’est l’intermédiaire entre le modèle et la vue. Il
demande les données au modèle, les analyse, et prend ensuite
des décisions et renvoie le texte à afficher à la vue.
02 Novembre 2017, POEC PHP 2017 4 / 12
MVC : schématisation
02 Novembre 2017, POEC PHP 2017 5 / 12
MVC : explication
Déroulement
1 Le client envoie une requête depuis la vue (son navigateur)
2 Le contrôleur intercepte et analyse la requête du client
3 Le contrôleur détermine quelle partie du modèle est concernée
afin d’effectuer les traitements nécessaires
4 Le modèle s’occupe de l’interaction avec les données, applique
les règles métier et renvoie les données (dénués de toute
présentation) au contrôleur
5 Le contrôleur sélectionne la vue correspondante et lui injecte les
données
6 La vue présente les données au client
02 Novembre 2017, POEC PHP 2017 6 / 12
Exemple sans MVC
<html>
<head>
<meta charset="utf-8" />
<title>Ma page</title>
<link href="[Link]" rel="stylesheet" />
</head>
<body>
<p>Les habitations et les prix a Marseille :</p>
<?php
try
{
$pdo = new PDO(’mysql:host=localhost;dbname=
location’,’root’,’’);
}
catch(Exception $e)
{
die(’Erreur : ’.$e->getMessage());
}
02 Novembre 2017, POEC PHP 2017 7 / 12
Exemple sans MVC
$req = $pdo->query(
’SELECT Adresse, LoyerM
FROM Habitation
WHERE Ville = "Marseille"’);
while ($donnees = $req->fetch())
{
?>
<div class="habitation_prix">
<h3>
<?php echo $donnees[’Adresse’]; ?>
<em>a <?php echo $donnees[’LoyerM’]; ?></em>
</h3>
<br />
</div>
<?php } $req->closeCursor(); ?>
</body>
</html>
02 Novembre 2017, POEC PHP 2017 8 / 12
Exemple avec MVC : le modèle
function getHabitation($ville)
{
try
{
$pdo = new PDO(’mysql:host=localhost;
dbname=location’, ’root’, ’’);
}
catch(Exception $e)
{
die(’Erreur : ’.$e->getMessage());
}
$req = $bdd->prepare(
’SELECT Adresse, LoyerM
FROM Habitation
WHERE Ville = :ville’);
$req->bindParam(’:ville’, $ville, PDO::
PARAM_INT);
$req->execute();
$result = $req->fetchAll();
return $result;
}
02 Novembre 2017, POEC PHP 2017 9 / 12
Exemple avec MVC : le contrôleur
<?php
include_once’[Link]’;
$res = getHabitation(’Marseille’);
foreach($res as $cle => $value)
{
echo nl2br(ucwords($res[’Adresse’]) . ’ ’ .
$res[’LoyerM’]);
}
?>
02 Novembre 2017, POEC PHP 2017 10 / 12
Et le MVC 2 ?
Exemple
Le MVC est un peu difficile à mettre en place à cause de la
multitude de contrôleurs
Donc une nouvelle version a été introduite : MVC 2
Il s’agit du même modèle avec un seul contrôleur pour orienter les
requêtes
02 Novembre 2017, POEC PHP 2017 11 / 12
Frameworks basés sur l’architecture MVC (2)
Exemple
1 CakePHP
2 FuelPHP
3 Jelix
4 Laravel
5 Symfony
6 Zend
7 ...
02 Novembre 2017, POEC PHP 2017 12 / 12