/** * 返回 FirePHP 实例 * * @return FirePHP */ protected static function _firephp() { if (is_null(self::$_firephp)) { $ver = self::$_ver; self::$_firephp = FirePHP::getInstance(true); } return self::$_firephp; }
/** * 返回 FirePHP 实例 * * @return FirePHP */ protected static function _firephp() { if (is_null(self::$_firephp)) { $ver = self::$_ver; require_once Q_DIR . "/_vendor/firephp/FirePHP.{$ver}.class.php"; self::$_firephp = FirePHP::getInstance(true); } return self::$_firephp; }
/** * 显示应用程序执行路径 * * 如果启用了 FirePHP 支持,将输出到浏览器的 FirePHP 窗口中,不影响页面输出。 */ static function dumpTrace() { if (self::$_firephp_enabled) { QDebug_FirePHP::dumpTrace(); return; } $debug = debug_backtrace(); $lines = ''; $index = 0; for ($i = 0; $i < count($debug); $i++) { if ($i == 0) { continue; } $file = $debug[$i]; if (!isset($file['file'])) { $file['file'] = 'eval'; } if (!isset($file['line'])) { $file['line'] = null; } $line = "#{$index} {$file['file']}({$file['line']}): "; if (isset($file['class'])) { $line .= "{$file['class']}{$file['type']}"; } $line .= "{$file['function']}("; if (isset($file['args']) && count($file['args'])) { foreach ($file['args'] as $arg) { $line .= gettype($arg) . ', '; } $line = substr($line, 0, -2); } $line .= ')'; $lines .= $line . "\n"; $index++; } // for $lines .= "#{$index} {main}\n"; if (ini_get('html_errors')) { echo nl2br(str_replace(' ', ' ', $lines)); } else { echo $lines; } }
/** * 断言 * * 如果 $bool 为 false,则调用 assert() 方法。这会导致一个警告信息或中断执行。 * * @param boolean $bool * 断言结果 * @param string $message * 要显示的断言信息 */ static function assert($bool, $message = null) { if (!self::$_assert_enabled || $bool) { return; } if (self::$_firephp_enabled) { QDebug_FirePHP::assert($bool, $message); return; } if (Q::getIni('assert_warning')) { trigger_error($message . "\nAssertion failed", E_USER_WARNING); self::dumpTrace(); } if (Q::getIni('assert_exception')) { throw new QDebug_Assert_Failed($message); } }