AppDebugger.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. if (!class_exists('AppDebugger')) {
  3. class AppDebugger {
  4. /**
  5. * Enregistre un gestionnaire global pour les erreurs et exceptions.
  6. */
  7. public static function register() {
  8. set_error_handler([self::class, 'handleError']);
  9. set_exception_handler([self::class, 'handleException']);
  10. }
  11. /**
  12. * Gère les erreurs PHP.
  13. *
  14. * @param int $errno
  15. * @param string $errstr
  16. * @param string $errfile
  17. * @param int $errline
  18. */
  19. public static function handleError($errno, $errstr, $errfile, $errline) {
  20. self::log('ERROR', "Erreur : $errstr dans $errfile à la ligne $errline");
  21. self::displayIfDebug("Erreur : $errstr", 'Erreur PHP');
  22. }
  23. /**
  24. * Gère les exceptions non capturées.
  25. *
  26. * @param Throwable $exception
  27. */
  28. public static function handleException($exception) {
  29. self::log('EXCEPTION', "Exception : " . $exception->getMessage());
  30. self::displayIfDebug($exception->getMessage(), 'Exception non capturée');
  31. }
  32. /**
  33. * Affiche les informations de débogage dans un format lisible si le mode debug est activé.
  34. *
  35. * @param mixed $data Les données à afficher.
  36. * @param string $label (Optionnel) Un label pour identifier les données.
  37. */
  38. public static function displayIfDebug($data, $label = 'Debug') {
  39. $config = require __DIR__ . '/../../config/config.php';
  40. if ($config['debug'] && ($label === 'Erreur PHP' || $label === 'Exception non capturée')) {
  41. echo '<div style="background-color: #f8f9fa; border: 1px solid #dee2e6; padding: 10px; margin: 10px; font-family: monospace;">';
  42. echo '<strong style="color: #495057;">' . htmlspecialchars($label) . ':</strong><pre style="color: #212529;">';
  43. echo htmlspecialchars(print_r($data, true));
  44. echo '</pre></div>';
  45. }
  46. }
  47. /**
  48. * Enregistre un message dans les logs.
  49. *
  50. * @param string $level Niveau du log (INFO, WARNING, ERROR, EXCEPTION).
  51. * @param string $message Message à enregistrer.
  52. */
  53. public static function log($level, $message) {
  54. Logger::log($level, $message);
  55. }
  56. }
  57. }