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";
|