Пример #1
0
 /**
  * Трассировка.
  *
  * Служебная функция, специально для отслеживания сигналов. Но можно и просто для вывода
  * отладки использовать :)
  *
  * Символ '`' нужен только для того, чтобы обозначить конечные числа для замены. Смысловой
  * нагрузки он не несет и можно использовать любое сочетание символов.
  *
  * Чтобы число превращалось в текст сигнала, ставь "!" перед числом.
  *
  * @param string $msg соообщение
  * @param bool $replaceSign искать значения констант сигналов?
  * @param bool $ts предворять сообщение значением времени?
  * @return void
  */
 public static function trace($msg = '', $replaceSign = true, $ts = false)
 {
     if (!self::$_signals) {
         // $constants = get_defined_constants(true); //не работает с интерфейсами
         $reflect = new \ReflectionClass('core\\IDealer');
         $consts = $reflect->getConstants();
         array_walk($consts, function (&$i) {
             $i = "`{$i}`";
         });
         self::$_signals = $consts;
     }
     if ($ts) {
         list($sec, $usec) = explode('.', microtime(true));
         printf('<b>%s.%04d</b> ', date('H:i:s', $sec), $usec);
     }
     if ($replaceSign && $msg) {
         $msg = preg_replace('~!(\\d+)~', '`$1`', $msg);
         $msg = str_replace(self::$_signals, array_keys(self::$_signals), $msg);
     }
     echo $msg;
 }