Subversion Repositories Applications.papyrus

Rev

Rev 2014 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2150 mathias 1
<?php
2
/**
3
 * Classe controlleur, coeur d'une application, c'est normalement la seule classe d'une application
4
 * qui devrait être appelée de l'extérieur.
5
 */
6
abstract class Controleur {
7
 
8
	private $registre;
9
	private $gestionnaire_erreur;
10
 
11
	/**
12
	 * Constructeur par défaut
13
	 */
14
     final public function __construct() {
15
 
16
    	$this->registre = Registre::getInstance() ;
17
    	$this->registre->set('chemin_config',CHEMIN_APPLI.'configuration'.DIRECTORY_SEPARATOR);
18
    	$this->registre->set('base_chemin_modele',DOSSIER_MODELES.DIRECTORY_SEPARATOR);
19
    	$this->registre->set('base_chemin_squelette',DOSSIER_SQUELETTES.DIRECTORY_SEPARATOR);
20
    	$this->registre->set('base_chemin_controleur',DOSSIER_CONTROLEURS.DIRECTORY_SEPARATOR);
21
 
22
    	$this->registre->set('bdd_type',BDD_PROTOCOLE) ;
23
    	$this->registre->set('bdd_hote',BDD_SERVEUR) ;
24
    	$this->registre->set('bdd_nom',BDD_NOM_PRINCIPALE) ;
25
    	$this->registre->set('bdd_utilisateur',BDD_UTILISATEUR) ;
26
    	$this->registre->set('bdd_pass',BDD_MOT_DE_PASSE) ;
27
 
28
    	$this->gestionnaire_erreur = GestionnaireErreur::getInstance();
29
 
30
    }
31
 
32
    /**
33
     * Charge un modele donné et le rend disponible sous la forme $this->nom_modele
34
     * @param $nom_modele le nom du modèle à charger
35
     */
36
     final protected function chargerModele($nom_modele) {
37
 
38
 
39
    	$chemin_modele = ($this->registre->get('base_chemin_modele')).$nom_modele.'.php';
40
 
41
    	if(!file_exists($chemin_modele)) {
42
    		return false ;
43
    	}
44
 
45
    	include_once($chemin_modele) ;
46
 
47
    	if(!class_exists($nom_modele)) {
48
    		return false ;
49
    	}
50
 
51
    	$this->$nom_modele = new $nom_modele ;
52
    }
53
 
54
    /**
55
     * Fonction prenant en paramètre le nom d'un squelette et un tableau associatif de données, en extrait les variables, charge le squelette
56
     * et cree une variable de classe contenant les deux combinés.
57
     * @param String le nom du squelette
58
     * @param Array un tableau associatif contenant les variables a injecter dans la vue
59
     *
60
     */
61
     final protected function chargerVue($nom_squelette,$donnees) {
62
 
63
    	$chemin_squelette = ($this->registre->get('base_chemin_squelette')).$nom_squelette.'.tpl.html';
64
 
65
    	if(!file_exists($chemin_squelette)) {
66
    		return false ;
67
    	}
68
 
69
    	$donnees['base_url'] = $this->registre->get('base_url_application') ;
70
 
71
    	// on extrait les variables du tableau de données
72
    	extract($donnees);
73
 
74
    	// et on enclenche la bufferisation de sortie
75
    	ob_start();
76
 
77
    	// si les tags courts sont désactivés
78
    	if ((bool) @ini_get('short_open_tag') === FALSE)
79
		{
80
			// on remplace les tags par la syntaxe classique avec echo
81
			echo eval('?>'.preg_replace("/;*\s*\?>/", "; ?>", str_replace('<?=', '<?php echo ', file_get_contents($chemin_squelette))));
82
		} else {
83
			// sinon, on se contente d'inclure le squelette
84
			include($chemin_squelette);
85
		}
86
 
87
		// on récupère le buffer et on le vide
88
		$buffer = ob_get_contents();
89
		@ob_end_clean();
90
 
91
		// enfin on renvoie le contenu
92
		$this->$nom_squelette = $buffer;
93
 
94
		return $nom_squelette;
95
    }
96
}
2014 aurelien 97
?>