Rev 79 | Rev 98 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/** Created on 27 mars 2009** To change the template for this generated file go to* Window - Preferences - PHPeclipse - PHP - Code Templates*//*** Classe GestionnaireException, gère les exceptions*/class GestionnaireException {/*** Liste des exceptions enregistrées*/private $exceptions;/*** Détermine si l'on affiche ou nom le contexte*/private $contexte;/*** Definit si php est lancé en ligne de commande ou en mode serveur*/private $mode;/*** le gestionnaire d'exception est un singleton* et possède donc un "pointeur statique sur lui-même"*/private static $gestionnaireException ;/*** Constructeur avec paramètres optionnel* @param bool indique si l'on veut afficher ou non le contexte des exceptions (i.e. la trace)*/public function __construct($contexte = false) {$this->exceptions = array();$this->contexte = $contexte;$this->mode = php_sapi_name();set_exception_handler(array($this,'gererException'));}/*** Renvoie le booleen définissant si l'on affiche le contexte ou non*/public function getContexte() {return $this->contexte;}/*** Definit si l'on veut afficher le contexte ou non* @param bool true si on veut afficher le contexte, false sinon, par défaut vaut false*/public function setContexte($contexte) {$this->contexte = $contexte;}/** Fonction d'accès au singleton* @return GestionnaireErreur le gestionnaire d'exceptions courant*/public static function getInstance(){if (self::$gestionnaireException instanceof GestionnaireException) {return self::$gestionnaireException;}self::$gestionnaireException = new GestionnaireException;return self::$gestionnaireException;}/*** Fonction de gestion des exceptions, remplace le handler par défaut*/public static function gererException(Exception $e) {// pour le moment on se contente de l'ajouter au tableau$this->exceptions[] = $e;}/*** Renvoie les exceptions au format (X)HTML* ou bien au format texte suivant le mode d'utilisation de PHP*/public function getExceptions() {foreach ($this->exceptions as $e) {switch($this->mode) {case 'cli' :$retour .= '<pre class="debogage">'."\n";$retour .= htmlentities($e->getMessage())."\n";$retour .= '<span class="debogage_fichier">'.'Fichier : '.$e->getFile().'</span>'."\n";$retour .= '<span class="debogage_ligne">'.'Ligne : '.$e->getLine().'</span>'."\n";$retour .= '</pre>'."\n";if ($this->getContexte()) {$retour .= '<pre>'."\n";$retour .= '<strong>Contexte : </strong>'."\n".print_r($e->getTraceAsString(), true)."\n";$retour .= '</pre>'."\n";}break;default:$retour .= $e->getMessage()."\n";$retour .= 'Fichier : '.$e->getFile()."\n";$retour .= 'Ligne : '.$e->getLine()."\n";$retour .= 'Message : '.$e->getMessage()."\n";$retour .= 'Fichier : '.$e->getFile()."\n";$retour .= 'Ligne : '.$e->getLine()."\n";if ($this->getContexte()) {$retour .= 'Contexte : '."\n".print_r($e->getTraceAsString(), true)."\n";}}}return $retour;}}?>