Subversion Repositories Applications.framework

Rev

Rev 80 | Rev 105 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 80 Rev 98
1
<?php
1
<?php
2
/*
2
/*
3
 * Created on 27 mars 2009
3
 * Created on 27 mars 2009
4
 *
4
 *
5
 * To change the template for this generated file go to
5
 * To change the template for this generated file go to
6
 * Window - Preferences - PHPeclipse - PHP - Code Templates
6
 * Window - Preferences - PHPeclipse - PHP - Code Templates
7
 */
7
 */
8
 
8
 
9
/**
9
/**
10
 * Classe GestionnaireException, gère les exceptions
10
 * Classe GestionnaireException, gère les exceptions
11
 */ 
11
 */ 
12
class GestionnaireException {
12
class GestionnaireException {
13
	
13
	
14
	/**
14
	/**
15
	 * Liste des exceptions enregistrées
15
	 * Liste des exceptions enregistrées
16
	 */
16
	 */
17
	private $exceptions;
17
	private $exceptions;
18
	
18
	
19
	/**
19
	/**
20
	 * Détermine si l'on affiche ou nom le contexte
20
	 * Détermine si l'on affiche ou nom le contexte
21
	 */
21
	 */
22
	private $contexte;
22
	private $contexte;
23
	
23
	
24
	/**
24
	/**
25
	 * Definit si php est lancé en ligne de commande ou en mode serveur
25
	 * Definit si php est lancé en ligne de commande ou en mode serveur
26
	 */
26
	 */
27
	private $mode;		
27
	private $mode;		
28
	
28
	
29
	/**
29
	/**
30
	 * le gestionnaire d'exception est un singleton
30
	 * le gestionnaire d'exception est un singleton
31
	 * et possède donc un "pointeur statique sur lui-même"
31
	 * et possède donc un "pointeur statique sur lui-même"
32
	 */
32
	 */
33
	private static $gestionnaireException ;
33
	private static $gestionnaireException ;
34
	
34
	
35
	/**
35
	/**
36
	 * Constructeur avec paramètres optionnel
36
	 * Constructeur avec paramètres optionnel
37
	 * @param bool indique si l'on veut afficher ou non le contexte des exceptions (i.e. la trace)
37
	 * @param bool indique si l'on veut afficher ou non le contexte des exceptions (i.e. la trace)
38
	 */
38
	 */
39
	public function __construct($contexte = false) {
39
	public function __construct($contexte = false) {
40
		
40
		
41
		$this->exceptions = array();
41
		$this->exceptions = array();
42
		$this->contexte = $contexte;
42
		$this->contexte = $contexte;
43
		$this->mode = php_sapi_name();
43
		$this->mode = php_sapi_name();
44
		set_exception_handler(array($this,'gererException'));
44
		set_exception_handler(array($this,'gererException'));
45
	}
45
	}
46
	
46
	
47
	/**
47
	/**
48
	 * Renvoie le booleen définissant si l'on affiche le contexte ou non
48
	 * Renvoie le booleen définissant si l'on affiche le contexte ou non
49
	 */
49
	 */
50
	public function getContexte() {
50
	public function getContexte() {
51
		return $this->contexte;
51
		return $this->contexte;
52
	}
52
	}
53
	
53
	
54
	/**
54
	/**
55
	 * Definit si l'on veut afficher le contexte ou non
55
	 * Definit si l'on veut afficher le contexte ou non
56
	 * @param bool true si on veut afficher le contexte, false sinon, par défaut vaut false
56
	 * @param bool true si on veut afficher le contexte, false sinon, par défaut vaut false
57
	 */
57
	 */
58
	public function setContexte($contexte) {
58
	public function setContexte($contexte) {
59
		$this->contexte = $contexte;
59
		$this->contexte = $contexte;
60
	}
60
	}
61
	
61
	
62
	 /** Fonction d'accès au singleton
62
	 /** Fonction d'accès au singleton
63
	 * @return GestionnaireErreur le gestionnaire d'exceptions courant
63
	 * @return GestionnaireErreur le gestionnaire d'exceptions courant
64
	 */
64
	 */
65
	public static function getInstance()
65
	public static function getInstance()
66
	{
66
	{
67
		if (self::$gestionnaireException instanceof GestionnaireException) {
67
		if (self::$gestionnaireException instanceof GestionnaireException) {
68
			return self::$gestionnaireException;
68
			return self::$gestionnaireException;
69
		}
69
		}
70
		self::$gestionnaireException = new GestionnaireException;
70
		self::$gestionnaireException = new GestionnaireException;
71
	    return self::$gestionnaireException;
71
	    return self::$gestionnaireException;
72
	}
72
	}
73
	
73
	
74
	/**
74
	/**
75
	 * Fonction de gestion des exceptions, remplace le handler par défaut
75
	 * Fonction de gestion des exceptions, remplace le handler par défaut
76
	 */
76
	 */
77
	public static function gererException(Exception $e) {
77
	public static function gererException(Exception $e) {
78
		
78
		
79
		// pour le moment on se contente de l'ajouter au tableau
79
		// pour le moment on se contente de l'ajouter au tableau
80
		$this->exceptions[] = $e;	
80
		$this->exceptions[] = $e;	
81
	}
81
	}
82
	
82
	
83
	/**
83
	/**
84
	 * Renvoie les exceptions au format (X)HTML
84
	 * Renvoie les exceptions au format (X)HTML
85
	 * ou bien au format texte suivant le mode d'utilisation de PHP
85
	 * ou bien au format texte suivant le mode d'utilisation de PHP
86
	 */
86
	 */
87
	public function getExceptions() {
87
	public function getExceptions() {
88
		
88
		
89
		foreach ($this->exceptions as $e) { 
89
		foreach ($this->exceptions as $e) { 
90
		
-
 
91
			switch($this->mode) {
90
			switch($this->mode) {
92
				case 'cli' : 
91
				case 'cli' : 
-
 
92
					$retour .= $e->getMessage()."\n";
-
 
93
					$retour .= 'Fichier : '.$e->getFile()."\n";
-
 
94
					$retour .= 'Ligne : '.$e->getLine()."\n";						
-
 
95
					$retour .= 'Message : '.$e->getMessage()."\n";
-
 
96
					$retour .= 'Fichier : '.$e->getFile()."\n";
-
 
97
					$retour .= 'Ligne : '.$e->getLine()."\n";
-
 
98
					if ($this->getContexte()) {
-
 
99
						$retour .= 'Contexte : '."\n".print_r($e->getTraceAsString(), true)."\n";
-
 
100
					}
-
 
101
					break;
-
 
102
				default:
93
					$retour .= '<pre class="debogage">'."\n";
103
					$retour .= '<pre class="debogage">'."\n";
94
					$retour .= htmlentities($e->getMessage())."\n";
104
					$retour .= htmlentities($e->getMessage())."\n";
95
					$retour .= '<span class="debogage_fichier">'.'Fichier : '.$e->getFile().'</span>'."\n";
105
					$retour .= '<span class="debogage_fichier">'.'Fichier : '.$e->getFile().'</span>'."\n";
96
					$retour .= '<span class="debogage_ligne">'.'Ligne : '.$e->getLine().'</span>'."\n";
106
					$retour .= '<span class="debogage_ligne">'.'Ligne : '.$e->getLine().'</span>'."\n";
97
					$retour .= '</pre>'."\n";
107
					$retour .= '</pre>'."\n";
98
							
108
							
99
					if ($this->getContexte()) {
109
					if ($this->getContexte()) {
100
						$retour .= '<pre>'."\n";
110
						$retour .= '<pre>'."\n";
101
						$retour .= '<strong>Contexte : </strong>'."\n".print_r($e->getTraceAsString(), true)."\n";
111
						$retour .= '<strong>Contexte : </strong>'."\n".print_r($e->getTraceAsString(), true)."\n";
102
						$retour .= '</pre>'."\n";
112
						$retour .= '</pre>'."\n";
103
					}
113
					}
104
				break;
-
 
105
				
-
 
106
				default:
-
 
107
					$retour .= $e->getMessage()."\n";
-
 
108
					$retour .= 'Fichier : '.$e->getFile()."\n";
-
 
109
					$retour .= 'Ligne : '.$e->getLine()."\n";						
-
 
110
					$retour .= 'Message : '.$e->getMessage()."\n";
-
 
111
					$retour .= 'Fichier : '.$e->getFile()."\n";
-
 
112
					$retour .= 'Ligne : '.$e->getLine()."\n";
-
 
113
					if ($this->getContexte()) {
-
 
114
						$retour .= 'Contexte : '."\n".print_r($e->getTraceAsString(), true)."\n";
-
 
115
					}
-
 
116
			}			
114
			}
117
		}
115
		}
118
		return $retour;
116
		return $retour;
119
	}
117
	}
120
 
118
 
121
}  
119
}  
122
?>
120
?>