/** * Трассировка. * * Служебная функция, специально для отслеживания сигналов. Но можно и просто для вывода * отладки использовать :) * * Символ '`' нужен только для того, чтобы обозначить конечные числа для замены. Смысловой * нагрузки он не несет и можно использовать любое сочетание символов. * * Чтобы число превращалось в текст сигнала, ставь "!" перед числом. * * @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; }