Je suis en train de tenter de convertir un site codé en procédural en OO (et en MVC).
Je suis parti de l'exemple donné ici : http://bpesquet.developpez.com/tutor...hitecture-mvc/
Je débute avec le MVC.
J'ai un bug, vu qu'il ne trouve pas ma page d'accueil ni le gestionnaire d'erreur censé afficher "fichier introuvable". Ne trouvant pas le bug, voici mon code (désolé car c'est long) :
routeurvhs.php (qui est bien appelé) :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 require_once 'Controleur/ControleurAccueil.php'; class Routeur { private $ctrlAccueil; public function __construct() { $this->ctrlAccueil = new ControleurAccueil(); ... } // Route une requête entrante : exécution l'action associée public function routerRequete() { try { if (isset($_GET['action'])) { if ($_GET['action'] == 'show_home') { $this->ctrlAccueil->accueil(); } ... else {throw new Exception($_GET['action'].":Action non valide");} } else { // aucune action définie : affichage de l'accueil $this->ctrlAccueil->accueil(); } } //fin du try catch (Exception $e) { $this->erreur($e->getMessage()); } } // Affiche une erreur private function erreur($msgErreur) { $vue = new Vue("Erreur"); $vue->generer(array('msgErreur' => $msgErreur)); }
Controleur/ControleurAccueil.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php require_once 'Vue/Vue.php'; class ControleurAccueil { // Affiche la liste de tous les billets du blog public function accueil() { $vue = new Vue("Accueil"); $vue->generer(array()); } }
Vue/Vue.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 class Vue { // Nom du fichier associé à la vue private $fichier; private $path; // Titre de la vue (défini dans le fichier vue) private $titre; public function __construct($action) { // Détermination du nom du fichier vue à partir de l'action $this->fichier = "vue" . $action . ".php"; $this->path=$action; } // Génère et affiche la vue public function generer($donnees) { // Génération de la partie spécifique de la vue $contenu = $this->genererFichier($this->fichier,$this->path, $donnees); // Génération du gabarit commun utilisant la partie spécifique. gabarit.php est lancé là et ça va donc mettre le menu. $vue = $this->genererFichier('Vue\gabarit.php','', array('titre' => $this->titre, 'contenu' => $contenu)); // Renvoi de la vue au navigateur echo $vue; } // Génère un fichier vue et renvoie le résultat produit private function genererFichier($fichier,$path, $donnees) { if (file_exists($path."\\".$fichier)) { // Rend les éléments du tableau $donnees accessibles dans la vue extract($donnees); // Démarrage de la temporisation de sortie ob_start(); // Inclut le fichier vue // Son résultat est placé dans le tampon de sortie if ($path!='') require $path."\\".$fichier; else require($fichier); // Arrêt de la temporisation et renvoi du tampon de sortie return ob_get_clean(); } else { throw new Exception("Fichier '$fichier' introuvable"); } } }
et voici ce qui est affiché :
La ligne 53 correspond ici à la ligne 33 de routeurvhs.php. Peut-on m'aider ?Fatal error: Uncaught exception 'Exception' with message 'Fichier 'Vue\gabarit.php' introuvable' in C:\wamp\www\vhs\Vue\Vue.php on line 53
Exception: Fichier 'Vue\gabarit.php' introuvable in C:\wamp\www\vhs\Vue\Vue.php on line 53
Partager