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é :
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
La ligne 53 correspond ici à la ligne 33 de routeurvhs.php. Peut-on m'aider ?