| Line 9... |
Line 9... |
| 9 |
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
|
9 |
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
|
| 10 |
* @author Jean-Pascal MILCENT <jmp@tela-botanica.org>
|
10 |
* @author Jean-Pascal MILCENT <jmp@tela-botanica.org>
|
| 11 |
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
|
11 |
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
|
| 12 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
|
12 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
|
| 13 |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
|
13 |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
|
| 14 |
* @version $Id: GestionnaireException.php 367 2011-10-03 12:40:48Z jpm $$
|
14 |
* @version $Id: GestionnaireException.php 498 2019-11-15 09:15:41Z killian $$
|
| 15 |
* @link /doc/framework/
|
15 |
* @link /doc/framework/
|
| 16 |
*
|
16 |
*
|
| 17 |
*/
|
17 |
*/
|
| 18 |
class GestionnaireException {
|
18 |
class GestionnaireException {
|
| Line 43... |
Line 43... |
| 43 |
// Désactivation des balises HTML dans les messages d'erreur de PHP en mode ligne de commande
|
43 |
// Désactivation des balises HTML dans les messages d'erreur de PHP en mode ligne de commande
|
| 44 |
if (self::$mode == self::MODE_CLI) {
|
44 |
if (self::$mode == self::MODE_CLI) {
|
| 45 |
ini_set('html_errors', 0);
|
45 |
ini_set('html_errors', 0);
|
| 46 |
}
|
46 |
}
|
| Line 47... |
Line 47... |
| 47 |
|
47 |
|
| 48 |
set_exception_handler(array(get_class(),'gererException'));
|
48 |
//set_exception_handler(array(get_class(),'gererException'));
|
| 49 |
set_error_handler(array(get_class(),'gererErreur'));
|
49 |
//set_error_handler(array(get_class(),'gererErreur'));
|
| Line 50... |
Line 50... |
| 50 |
}
|
50 |
}
|
| 51 |
|
51 |
|
| 52 |
/** Configure le Gestionnaire d'exceptions et d'erreur à partir des paramêtres de config. */
|
52 |
/** Configure le Gestionnaire d'exceptions et d'erreur à partir des paramêtres de config. */
|
| Line 86... |
Line 86... |
| 86 |
/**
|
86 |
/**
|
| 87 |
* Fonction de gestion des exceptions, remplace le handler par défaut.
|
87 |
* Fonction de gestion des exceptions, remplace le handler par défaut.
|
| 88 |
* Si une boucle génère de multiple exception (ou erreur) identique une seule sera stockée.
|
88 |
* Si une boucle génère de multiple exception (ou erreur) identique une seule sera stockée.
|
| 89 |
* @param Exception $e l'exception à traiter
|
89 |
* @param Exception $e l'exception à traiter
|
| 90 |
*/
|
90 |
*/
|
| 91 |
public static function gererException(Exception $e) {
|
91 |
public static function gererException(Throwable $e) {
|
| 92 |
$cle = hash('md5', $e->getMessage().'-'.$e->getFile().'-'.$e->getLine());
|
92 |
$cle = hash('md5', $e->getMessage().'-'.$e->getFile().'-'.$e->getLine());
|
| 93 |
if (!isset(self::$exceptions[$cle])) {
|
93 |
if (!isset(self::$exceptions[$cle])) {
|
| 94 |
self::$exceptions[$cle] = $e;
|
94 |
self::$exceptions[$cle] = $e;
|
| 95 |
self::loggerException($e);
|
95 |
self::loggerException($e);
|
| 96 |
}
|
96 |
}
|
| Line 171... |
Line 171... |
| 171 |
|
171 |
|
| 172 |
/**
|
172 |
/**
|
| 173 |
* Logue une exception donnée sous une forme lisible si self::logger vaut true.
|
173 |
* Logue une exception donnée sous une forme lisible si self::logger vaut true.
|
| 174 |
* @param Exception $e l'exception à logger
|
174 |
* @param Exception $e l'exception à logger
|
| 175 |
*/
|
175 |
*/
|
| 176 |
private static function loggerException(Exception $e) {
|
176 |
private static function loggerException(Throwable $e) {
|
| 177 |
if (self::$logger) {
|
177 |
if (self::$logger) {
|
| 178 |
$message = self::formaterExceptionTxt($e);
|
178 |
$message = self::formaterExceptionTxt($e);
|
| 179 |
Log::ajouterEntree('erreurs', $message);
|
179 |
Log::ajouterEntree('erreurs', $message);
|
| 180 |
}
|
180 |
}
|
| Line 183... |
Line 183... |
| 183 |
/**
|
183 |
/**
|
| 184 |
* Formate en texte une exception passée en paramètre.
|
184 |
* Formate en texte une exception passée en paramètre.
|
| 185 |
* @since 0.3
|
185 |
* @since 0.3
|
| 186 |
* @param Exception l'exception à formater.
|
186 |
* @param Exception l'exception à formater.
|
| 187 |
*/
|
187 |
*/
|
| 188 |
public static function formaterExceptionDebug(Exception $e) {
|
188 |
public static function formaterExceptionDebug(Throwable $e) {
|
| 189 |
$txt = '';
|
189 |
$txt = '';
|
| 190 |
if ($e->getSeverity() == E_USER_NOTICE) {
|
190 |
if ($e->getSeverity() == E_USER_NOTICE) {
|
| 191 |
$txt = $e->getMessage();
|
191 |
$txt = $e->getMessage();
|
| 192 |
} else {
|
192 |
} else {
|
| 193 |
$txt = self::formaterExceptionTxt($e);
|
193 |
$txt = self::formaterExceptionTxt($e);
|
| Line 198... |
Line 198... |
| 198 |
/**
|
198 |
/**
|
| 199 |
* Formate en texte une exception passée en paramètre.
|
199 |
* Formate en texte une exception passée en paramètre.
|
| 200 |
* @since 0.3
|
200 |
* @since 0.3
|
| 201 |
* @param Exception l'exception à formater.
|
201 |
* @param Exception l'exception à formater.
|
| 202 |
*/
|
202 |
*/
|
| 203 |
public static function formaterExceptionTxt(Exception $e) {
|
203 |
public static function formaterExceptionTxt(Throwable $e) {
|
| 204 |
$message = '';
|
204 |
$message = '';
|
| 205 |
$message .= $e->getMessage()."\n";
|
205 |
$message .= $e->getMessage()."\n";
|
| 206 |
$message .= 'Fichier : '.$e->getFile()."\n";
|
206 |
$message .= 'Fichier : '.$e->getFile()."\n";
|
| 207 |
$message .= 'Ligne : '.$e->getLine()."\n";
|
207 |
$message .= 'Ligne : '.$e->getLine()."\n";
|
| 208 |
if (self::getContexte()) {
|
208 |
if (self::getContexte()) {
|
| Line 215... |
Line 215... |
| 215 |
/**
|
215 |
/**
|
| 216 |
* Formate en (X)HTML une exception passée en paramètre.
|
216 |
* Formate en (X)HTML une exception passée en paramètre.
|
| 217 |
* @since 0.3
|
217 |
* @since 0.3
|
| 218 |
* @param Exception l'exception à formater.
|
218 |
* @param Exception l'exception à formater.
|
| 219 |
*/
|
219 |
*/
|
| 220 |
public static function formaterExceptionXhtml(Exception $e) {
|
220 |
public static function formaterExceptionXhtml(Throwable $e) {
|
| 221 |
$message = '';
|
221 |
$message = '';
|
| 222 |
$message .= '<div class="debogage">'."\n";
|
222 |
$message .= '<div class="debogage">'."\n";
|
| 223 |
$message .= $e->getMessage()."\n";
|
223 |
$message .= $e->getMessage()."\n";
|
| 224 |
$message .= '<span class="debogage_fichier">'.'Fichier : '.$e->getFile().'</span>'."\n";
|
224 |
$message .= '<span class="debogage_fichier">'.'Fichier : '.$e->getFile().'</span>'."\n";
|
| 225 |
$message .= '<span class="debogage_ligne">'.'Ligne : '.$e->getLine().'</span>'."\n";
|
225 |
$message .= '<span class="debogage_ligne">'.'Ligne : '.$e->getLine().'</span>'."\n";
|
| Line 242... |
Line 242... |
| 242 |
echo self::getExceptionsFormatees();
|
242 |
echo self::getExceptionsFormatees();
|
| 243 |
}
|
243 |
}
|
| 244 |
}
|
244 |
}
|
| Line 245... |
Line 245... |
| 245 |
|
245 |
|
| 246 |
}
|
- |
|
| 247 |
?>
|
246 |
}
|
| - |
|
247 |
?>
|