Définit la largeur de la bordure gauche
Le design pattern (patron de conception) est une manière de résoudre un problème de programmation; généralement par la programmation orienté objet, mais pas toujours.
Le design pattern (patron de conception) est une manière de résoudre un problème de programmation; généralement par la programmation orienté objet, mais pas toujours.
Au fil du temps, certaines conceptions sont devenues récurrentes face à certaines situations et elles ont été documentées, nommées et standardisées.
Dans le domaine du web, le Design Pattern Modèle Vue Contrôleur (MVC) est l'un d'eux.
Le Design Pattern MVC est une façon de s’organiser lors de la conception d’un projet pour faciliter la tache aux différents intervenant lors de la conception, la mise à jour ou le débogage.
L'architecture MVC cherche à séparer trois choses :
Les contrôleurs permettent de répondre aux actions de l'utilisateur. Chaque contrôle est associé à une vue : cette dernière permet de présenter l'information retournée à l'utilisateur.
Au fil du temps, le pattern MVC a évolué vers le MVC2. Dans l'architecture MVC 2, il n'existe plus qu'un seul et unique contrôleur réceptionnant toutes les requêtes clientes.
Passons à quelque chose de concret !
En première étape créez une base de données dans votre serveur local et nommez la « test ».
Puis exécutez la requête SQL suivante pour créer la table « personne ».
Exemple : 📋 Copier le code
-- -- Structure de la table `personne` -- CREATE TABLE IF NOT EXISTS `personne` ( `id` int(11) NOT NULL, `nom` varchar(30) NOT NULL, `prenom` varchar(30) NOT NULL, `age` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Contenu de la table `personne` -- INSERT INTO `personne` (`id`, `nom`, `prenom`, `age`) VALUES (1, 'Olivier', 'Caen', 42), (2, 'Dubois', 'Paul', 32), (3, 'Le noir', 'George', 24), (4, 'Dubois', 'Cati', 42);
La second partie l’exemple le plus simple est : une page affichant un listing de personne pourrait être la suivante.
Exemple : 📋 Copier le code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang= "en_US"> <head> <title> Exemple </title> </head> <body> <?php $dbname= 'teste'; $dbhost='localhost'; //votre serveur $dbuser='root'; // utilisateur $dbpass=''; // mot de passe $db=mysql_connect($dbhost,$dbuser,$dbpass); mysql_select_db($dbname,$db); $query="SELECT * FROM personne "; $req=mysql_query($query)or die('Erreur SQL!<br>'.$sql.'<br>'.mysql_error()); while ($row = mysql_fetch_array($req)) { echo "Nom : ".$row['nom']." Prénom : ".$row['prenom']." age ".$row['age']."<br />"; } mysql_close(); ?> </body> </html>
Oui c’est simple mais tout est mélangé (html, php, et sql).
Imaginez que vous avez non pas 26 lignes mais quelques centaines, et que vous voulez faire une modification (une mise à jour par exemple )
Et qu’en plus vous travaillez en groupe et que chaque membre du groupe doit faire une modification sur la partie le concernant.
Comment vous allez vous en sortir ?!
La solution est un découpage du code c'est-à-dire appliquer l’architecture MVC .
Alors découpons le code de l’exemple précèdent :
Je vais commencer par le model dans lequel nous avons deux fichiers
Le premier modéle implémente la fonction mysql_fetch_all() qui n'est pas une fonction native de php.
Il convient de l'implémenter dans un fichier à part . Ici dans le fichier : connect_bd.php:
Exemple : 📋 Copier le code
<?php $db = mysql_connect('localhost', 'root', ''); mysql_select_db('teste',$db); function mysql_fetch_all($query, $kind = 'assoc') { $result = array(); $kind = $kind === 'assoc' ? $kind : 'row'; eval('while(@$r = mysql_fetch_'.$kind.'($query)) array_push($result, $r);'); return $result; } ?>
Le second modèle qui donne accès aux données et est isolé dans une classe dao dans le fichier : dao_example_dao.php
Exemple : 📋 Copier le code
<?php require ("connect_bd.php"); class ExampleDao { public function get_personnes() { $sql = "SELECT personne.nom, personne.prenom, personne.age FROM personne "; $query = mysql_query($sql) or die('Erreur SQL !<br>'.mysql_error()); $all = mysql_fetch_all($query); return $all; } } ?>
Les deux fichier (connect_bd.php et : dao_example_dao.php) serons placés dans un dossier : « dao »
Le contrôleur (qui dans cet exemple ne fait pas grand chose) est isolé dans un fichier : « class_example.php » :
Il est mis dans un dossier « action ».
Exemple : 📋 Copier le code
<?php require ("dao/dao_example_dao.php"); class Example { public function example() { $exampleDao= new ExampleDao(); $data = $exampleDao->get_personnes(); require("web/affichage.php"); } } ?>
: qui sera placé à la racine du site.
Exemple : 📋 Copier le code
<?php require("action/class_example.php"); new Example(); ?>
Enfin, l'affichage:
L’interface utilisateur est mis dans le fichier ; « affichage.php » qui sera mis dans le dossier « web »:
Exemple : 📋 Copier le code
<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US"> <head> <title> Exemple </title> </head> <body> <?php foreach ($data AS $row ) { ?> Nom : <?php echo $row["nom"]; ?> Prénom : <?php echo $row["prenom"]; ?> Age : <?php echo $row["age"]; ?> <br/> <?php } ?> </body> </html>
Note :
Pour tester cet exemple il faut créer trois dossier à la racine de votre site en local, qui sont
Le dossier web, le dossier action et le dossier dao.
Puis placer dans chaque dossier les fichiers appropriés comme indiquer en haut dans le tutorial.
Dans cette architecture le code est beaucoup plus facile à maintenir.
L’architecture proposée dans cet exemple est à titre indicatif c’est à vous de la suivre ou de trouver une organisation qui vous convient.
Par carabde 20 Aout 2014PROMO ! CLUB AFFILIATION FACILE : lien publicitaire affiché pendant 1 semaine sur plusieurs sites à fort trafic, partage des commissions 1TPE et SystemeIO, plus de 20000 produits.
Ces sites web "pépites" vous payent entre 500 et 1000 euros par mois pour effectuer de petites tâches simples !