* @version 0.0.0
* @copyright Copyright (c) 2007, 2008 Roland Haeder, this is free software
* @license GNU GPL 3.0 or any newer version
* @link http://www.ship-simu.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see
%s", $this->__toString(), $message, $this->getPrintableBackTrace() ); // End here exit(); } // END - if // Make sure everything is assigned properly parent::__construct($message, $code); // Log it away if DEBUG_ALL is set if (defined('DEBUG_ALL')) { // Log the error error_log(sprintf("[%s:] %s (%s)", $this->__toString(), $message, $this->getHexCode() )); } // END - if } /** * Save the current backtrace * * @return void */ private final function saveBackTrace () { // Get full backtrace $this->backTrace = debug_backtrace(); // Remove this call $dummy = array_shift($this->backTrace); // resort the array ksort($this->backTrace); } /** * Get saved backtrace * * @return $backTrace The full backtrace in an array */ public final function getBackTrace () { return $this->backTrace; } /** * Getter for printable backtrace * * @return $backTrace Backtrace for web pages */ public final function getPrintableBackTrace () { // Get the backtrace $dbgTrace = $this->getBackTrace(); // Taken from de.php.net user comments $dbgMsg = "
".htmlentities(print_r($dbgInfo['args'], true)).""; $info = ""; foreach ($dbgInfo['args'] as $debug) { // Add only non-array elements if (!is_array($debug)) { $info .= $debug.", "; } // END - if } // END - if $info = substr($info, 0, -2); } // END - if // Prepare argument infos $info = "{$info}"; // File detection $file = "Unknown file"; if (isset($dbgInfo['file'])) { $file = basename($dbgInfo['file']); } // END - if // Line detection $line = "Unknown line"; if (isset($dbgInfo['line'])) { $line = "line {$dbgInfo['line']}"; } // END - if // The message $dbgMsg .= "\t at ".$dbgIndex." ".$file." (".$line.") -> ".$dbgInfo['function']."(".$info.")