Subversion Repositories Applications.framework

Rev

Rev 34 | Go to most recent revision | Details | Last modification | View Log | RSS feed

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