Zend_Debug::dump() po swojemu

Pisząc programy w PHP często jest tak iż na szybko potrzebujemy wyrzucić na ekran wartość jakieś zmiennej. Zend_Debug daje bardzo dobre narzędzie ale ma jeden mały brak.
Zdarzało mi się przy wielu zastosowaniach Zend_Debug::dump() zapomnieć gdzie były one powstawiane. Moja modyfikacja wyświetla taką informację poza tym daje jeszcze kilka innych możliwości jak przerwanie pracy po wyświetleniu danych, 3 rodzaje prezentowanych informacji oraz zapisanie w logu tych danych.

/**
* Klasa debugująca
* @since 2010-01-28
* @version 1.1.0
*
*/
class Debug {

   /**
   * Wyświetla przekazaną wartość
   *
   * @param mixed $var
   * @param boolean $exit Czy po wyświetleniu przerwać działanie?
   * @param string $description Określa sposób wyświetlania opisu. Możliwe wartości short, medium, long.
   * @param boolean $log Czy zapisywać w logach?
   * @return void
   */
   public static function dump($var, $exit = false, $description = 'short', $log = true) {
      Zend_Loader::loadClass('Zend_Debug');

      $debugBacktrace = debug_backtrace();

      $message = '';

      $message .= '<div style="text-align: left; background-color: #dfdfdf; font-family: Courier,monospace; font-size: 11px; font-style: normal; font-weight: normal; font-variant: normal; padding: 5px;">';

      switch ($description) {
         case 'short':
            $message .= '<strong>'.$debugBacktrace[0]['file'].'</strong> w linii <strong>'.$debugBacktrace[0]['line'].'</strong>';
            break;
         case 'medium':
            $message .= '<ol>';
            foreach ($debugBacktrace as $i =&gt; $d) {
               $message .= '<li>';
               $message .= '<strong>'.$d['class'].$d['type'].$d['function'].'</strong>';
               $message .= ' - w pliku <em>'.$d['file'].'</em> w linii <em>'.$d['line'].'</em>';
               $message .= ' z '.count($d['args']).' argumentami.';
               $message .= '</li>';
            }
            $message .= '</ol>';
            break;
         case 'long':
            $message .= '<ol>';
            foreach ($debugBacktrace as $i =&gt; $d) {
               $message .= '<li>';
               $message .= 'W pliku <em>'.$d['file'].'</em> w linii <em>'.$d['line'].'</em>';
               $message .= ' wywołano <strong>'.$d['class'].$d['type'].$d['function'].'</strong>';
               if(count($d['args']) != 0) $message .= '<ol>';
               $message .= '(';
               foreach ($d['args'] as $a) {
                  $message .= '<li>';
                  Zend_Debug::dump($a);
                  $message .= '</li>';
               }
               $message .= ').';
               if(count($d['args']) != 0) $message .= '</ol>';
            }
            $message .= '</li></ol>';
            break;
      }

      $message .= '<hr />';
      $message .= Zend_Debug::dump($var, 'DUMP', false);
      $message .= '';

      echo $message;

      if($log) {
         Log::debug(strip_tags(str_replace(array('','',''), "\n", $message)));
      }

      if($exit) {
         exit();
      }
   }
}