Subversion Repositories Applications.framework

Rev

Rev 80 | Rev 105 | Go to most recent revision | Details | Compare with Previous | 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
			switch($this->mode) {
91
				case 'cli' :
98 jpm 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:
5 aurelien 103
					$retour .= '<pre class="debogage">'."\n";
104
					$retour .= htmlentities($e->getMessage())."\n";
105
					$retour .= '<span class="debogage_fichier">'.'Fichier : '.$e->getFile().'</span>'."\n";
106
					$retour .= '<span class="debogage_ligne">'.'Ligne : '.$e->getLine().'</span>'."\n";
107
					$retour .= '</pre>'."\n";
108
 
109
					if ($this->getContexte()) {
110
						$retour .= '<pre>'."\n";
111
						$retour .= '<strong>Contexte : </strong>'."\n".print_r($e->getTraceAsString(), true)."\n";
112
						$retour .= '</pre>'."\n";
113
					}
98 jpm 114
			}
5 aurelien 115
		}
116
		return $retour;
117
	}
118
 
119
}
120
?>