Je vous propose aujourd'hui la découverte de la classe WdDebug qui m'est bien utile pour trouver rapidement d'où viennent les problèmes ou – lorsque la phase de production et terminée – d'être prévenu d'éventuelles erreurs avant que cela ne puisse être gênant pour le client ou ses visiteurs.
La classe WdDebug définit un ensemble de fonctions et de méthodes permettant de personnaliser et d'étendre le système d'erreurs de PHP5. Elle propose :
* Un système non intrusif de journalisation de messages.
* Des fonctions de traitement de la pile d'appel PHP.
* Une gestion personnalisée des erreurs.
* Un système de rapport d'erreur.
Facile à mettre en oeuvre :
<?php
define('WDDEBUG_SILENT', true);
define('WDDEBUG_REPORT_ADDRESS', '[email protected]');
require_once 'wddebug.php';
set_error_handler(array('WdDebug', 'errorHandler');
?>
Elle permettra d'obtenir des messages d'erreurs détaillés :Code : Tout sélectionner
Error with the following message:
Undefined variable: b
in G:\Weirdog\www\wd\wdpublisher\packages\user\modules\users\module.php at line 18
Stack trace:
#00 — (0): mysql_fetch_object(Resource of type..., User)
#01 — G:/Weirdog/www/wd/wdcore/wdsql.php(220): call_user_func_array(mysql_fetch_obje..., Array)
#02 — G:/Weirdog/www/wd/wdpublisher/packages/user/modules/users/module.php(109): WdSQL->fetch(Resource of type..., 4, User)
#03 — G:/Weirdog/www/wd/wdcore/wddatabasetable.php(300): user_users_WdModule->fetchEntry(Resource of type...)
#04 — G:/Weirdog/www/wd/wdpublisher/packages/user/modules/users/module.php(154): WdDatabaseTable->load(1)
#05 — G:/Weirdog/www/wd/wdcore/wdcore.php(542): user_users_WdModule->startup()
#06 — G:/Weirdog/www/wd/wdcore/wdcore.php(711): WdCore->getModule(user.users)
#07 — G:/Weirdog/www/wd/wdpublisher/includes/wdpcore.php(150): WdCore->runModules()
#08 — G:/Weirdog/www/wd/wdcore/wdcore.php(654): WdPCore->runModules()
#09 — G:/Weirdog/www/wd/wdpublisher/includes/wdpcore.php(107): WdCore->run()
#10 — G:/Weirdog/www/wd/wdpublisher/includes/startup.php(13): WdPCore->run()
#11 — G:/Weirdog/www/wd/wdpublisher/publisher.php(14): require(G:\Weirdog\www\w...)
#12 — /debug.php(3): require_once(G:\Weirdog\www\w...)
Je vous laisse découvrir tout ça : Gestion personnalisée des erreurs PHP.