* @version 0.0.0
* @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2013 Core Developer Team
* @license GNU GPL 3.0 or any newer version
* @link http://www.shipsimu.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 // Should we log exceptions? (bad implementation) if (defined('LOG_EXCEPTIONS')) { // 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 - foreach // Remove last chars (commata, space) $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.")