Rev 61 | Rev 65 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*vim: set expandtab tabstop=4 shiftwidth=4: */// +------------------------------------------------------------------------------------------------------+// | PHP version 5.0.4 |// +------------------------------------------------------------------------------------------------------+// | Copyright (C) 2005 Tela Botanica (accueil@tela-botanica.org) |// +------------------------------------------------------------------------------------------------------+// | This file is part of eFlore-Debogage. |// | |// | Foobar is free software; you can redistribute it and/or modify |// | it under the terms of the GNU General Public License as published by |// | the Free Software Foundation; either version 2 of the License, or |// | (at your option) any later version. |// | |// | Foobar is distributed in the hope that it will be useful, |// | but WITHOUT ANY WARRANTY; without even the implied warranty of |// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |// | GNU General Public License for more details. |// | |// | You should have received a copy of the GNU General Public License |// | along with Foobar; if not, write to the Free Software |// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |// +------------------------------------------------------------------------------------------------------+// CVS : $Id: GestionnaireErreur.class.php,v 1.1 2005/11/15 17:33:49 jp_milcent Exp $/*** Classe de gestion des erreurs.****@package eFlore*@subpackage Debogage//Auteur original :*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>//Autres auteurs :*@author aucun*@copyright Tela-Botanica 2000-2005*@version $Revision: 1.1 $ $Date: 2005/11/15 17:33:49 $// +------------------------------------------------------------------------------------------------------+*/// +------------------------------------------------------------------------------------------------------+// | ENTETE du PROGRAMME |// +------------------------------------------------------------------------------------------------------+// +------------------------------------------------------------------------------------------------------+// | CORPS du PROGRAMME |// +------------------------------------------------------------------------------------------------------+/*** Classe GestionnaireErreur** Gérer les erreurs PHP et SQL.*/class GestionnaireErreur {/*** Attributes: ***//*** Contient la liste des erreurs.* @access private*/private $erreurs;/*** Permet de savoir si on veut faire apparaître ou pas le contexte de l'erreur,* c'est à dire le contenu des variables.* @access private*/private $contexte;/*** Permet de savoir si on veut faire apparaître ou pas les erreurs Pear.* @access private*/private $pear;/*** Chaine de caractères permettant d'identifier les erreurs de la bibliothèque Pear.* @access private*/private $pear_chaine;/*** Contient le niveau d'erreur courrant. Celui que l'on donne à la fonction* error_reporting().* @access private*/private $niveau_erreur_courrant;/*** Constructeur: ***//*** Construit le gestionnaire d'erreur.** @return void* @access public*/public function __construct($bool_contexte = false, $int_niveau = 2048, $bool_pear = false, $str_pear = ''){$this->erreurs = array();$this->setContexte($bool_contexte);$this->setNiveauErreurCourrant($int_niveau);$this->setPear($bool_pear);$this->setPearChaine($str_pear);set_error_handler(array($this, 'gererErreur'));} // end of member function __construct/*** Destructeur: ***/public function __destruct(){echo $this->retournerErreur();}/*** Accesseurs: ***//*** Récupère le tableau des erreurs.** @return array* @access public*/public function getErreur(){return $this->erreurs;}/*** Ajoute une erreur à la liste.** @param array une_erreur* @return void* @access public*/public function setErreur($une_erreur){$this->erreurs[] = $une_erreur;}/*** Récupère la valeur du contexte.** @return boolean* @access public*/public function getContexte(){return $this->contexte;}/*** Définit si oui ou non le contexte sera affiché.** @param boolean un_contexte* @return void* @access public*/public function setContexte( $un_contexte ){$this->contexte = $un_contexte;}/*** Récupère la valeur de l'attribut Pear.** @return boolean true pour afficher les erreurs Pear sinon false.* @access public*/public function getPear(){return $this->pear;}/*** Définit si oui ou non les erreurs Pear seront affichées.** @param boolean true pour afficher les erreurs Pear sinon false.* @return void* @access public*/public function setPear( $p ){$this->pear = $p;}/*** Récupère la valeur de l'attribut pear_chaine.** @return string la chaine de caractère identifiant les erreurs Pear.* @access public*/public function getPearChaine(){return $this->pear_chaine;}/*** Définit la chaine de caractère identifiant les erreurs Pear.** @param string la chaine de caractère identifiant les erreurs Pear.* @return void* @access public*/public function setPearChaine( $pc ){$this->pear_chaine = $pc;}/*** Récupère le niveau d'erreur courrant.** @return int le niveau d'erreur courrant.* @access public*/public function getNiveauErreurCourrant(){return (int)$this->niveau_erreur_courrant;}/*** Définit le niveau d'erreur courrant.** @param int un niveau d'erreur.* @return void* @access public*/public function setNiveauErreurCourrant($niveau){$this->niveau_erreur_courrant = $niveau;}/*** Méthodes : ***//**** @param int niveau* @param string message* @param string fichier* @param int ligne* @param boolean contexte* @return void* @access public*/public function gererErreur( $niveau, $message, $fichier, $ligne, $contexte ){$aso_erreur = array();// Nous vérifions si nous affichons ou pas l'erreur en fonction du niveau demandéif ( $niveau <= $this->getNiveauErreurCourrant() ) {$aso_erreur['niveau'] = $niveau;$aso_erreur['message'] = $message;$aso_erreur['fichier'] = $fichier;$aso_erreur['ligne'] = $ligne;if ($this->getContexte()) {$aso_erreur['contexte'] = $contexte;}$this->setErreur($aso_erreur);}// Si nous avons à faire à une erreur et non à un warning ou une notice, nous arrêtons l'exécution du scriptif ($niveau == E_USER_ERROR) {echo $this->retournerErreur();exit(1);}} // end of member function gererErreur/*** Retourne l'erreur PHP formatée en XHTML.** @return string* @access public*/public function retournerErreur(){$retour = '';$erreur_pear_nbre = 0;foreach($this->getErreur() as $aso_erreur) {if ('<!-- BEGIN sql -->' == substr($aso_erreur['message'], 0, 18)) {$retour .= $aso_erreur['message'];continue;}// Nous testons les erreurs PEAR pour ne pas en tenir compteif (!$this->getPear() && stristr($aso_erreur['fichier'], $this->getPearChaine())) {$erreur_pear_nbre++;} else {$retour .= '<p class="attention">'."\n";$retour .= '<strong>ERREUR</strong><br />'."\n";$retour .= '<strong>Niveau : </strong>'.$aso_erreur['niveau'].'<br />'."\n";$retour .= '<strong>Message : </strong>'.$aso_erreur['message'].'<br />'."\n";$retour .= '<strong>Fichier : </strong>'.$aso_erreur['fichier'].'<br />'."\n";$retour .= '<strong>Ligne : </strong>'.$aso_erreur['ligne'].'<br />'."\n";if ($this->getContexte()) {$retour .= '<pre>'."\n";$retour .= '<stong>Contexte : </stong>'."\n".print_r($aso_erreur['contexte'], true)."\n";$retour .= '</pre>'."\n";}$retour .= '</p>'."\n";}}if ($erreur_pear_nbre != 0) {$retour .= '<p class="attention"><strong>Nombre d\'erreurs PEAR : </strong>'.$erreur_pear_nbre.'</p>'."\n";}return $retour;} // end of member function retournerErreur/*** Retourne l'erreur SQL formatée.** @param string fichier* @param int ligne* @param string message* @param string requete* @param string autres* @return string* @static* @access public*/public static function retournerErreurSql( $fichier, $methode, $message, $requete = NULL, $autres = NULL ){$retour = '<!-- BEGIN sql -->';$retour .= '<div id="zone_erreur">'."\n";$retour .= '<h1 > ERREUR SQL </h1><br />'."\n";$retour .= '<dl>'."\n";$retour .= '<dt> Fichier : </dt> ';$retour .= '<dd> '.$fichier.'</dd>'."\n";$retour .= '<dt> Méthode : </dt> ';$retour .= '<dd> '.$methode.'</dd>'."\n";$retour .= '<dt> Message erreur : </dt> ';$retour .= '<dd> '.$message.'</dd>'."\n";if (!is_null($requete)) {$retour .= '<dt> Requete : </dt> ';$retour .= '<dd> '.$requete.' </dd>'."\n";}if (!is_null($autres)) {$retour .= '<dt> Autres infos : </dt> ';$retour .= '<dd> '.$autres.' </dd>'."\n";}$retour .= '</dl>'."\n";$retour .= '</div>'."\n";$retour .= '<!-- END sql -->'."\n";return $retour;} // end of member function retournerErreurSql/*** Retourne l'erreur SQL formatée selon le format demandé.** @param string fichier* @param int ligne* @param string message* @param string format : txt.* @return string* @static* @access public*/public static function formaterMessageErreur( $message, $fichier = null, $ligne = null, $format = 'txt' ){$retour = '';if ($format == 'txt') {$retour .= "\n";if (!is_null($fichier)) {$retour .= "\t".'Fichier : '.$fichier."\n";}if (!is_null($ligne)) {$retour .= "\t".'Ligne : '.$ligne."\n";}$retour .= "\t".'Message : '.$message."\n";}return $retour;}}/* +--Fin du code ----------------------------------------------------------------------------------------+** $Log$** +-- Fin du code ----------------------------------------------------------------------------------------+*/?>