* @version 1.0 */ abstract class FrameworkException extends ReflectionException { /** * Array for the backtrace */ private $backTrace = array(); /** * The super constructor for all exceptions * * @param $message The non-optional message for the exception * @param $code An optional code for better debugging * @return void */ public function __construct($message, $code = 0) { // Extract backtrace $this->saveBackTrace(); // Cast all data $message = (string) $message; $code = (int) $code; // make sure everything is assigned properly parent::__construct($message, $code); } /** * Save the current backtrace * * @return void */ private final function saveBackTrace () { $this->backTrace = debug_backtrace(); } /** * Get saved backtrace * * @return $backTrace The full backtrace in an array */ public final function getBackTrace () { return $this->backTrace; } /** * Returns the name of the thrown exception * * @return $toString The name of the thrown exception */ public function __toString() { return get_class($this); } /** * Getter for hex-decimal code * * @return $hexCode The exception code in hex-decimal format */ public final function getHexCode () { // Get the decimal code $code = $this->getCode(); // Format it to hex-decimal, 0x as prefix and 3 chars $hexCode = sprintf("0x%03s", dechex($code)); // Return it return $hexCode; } } // [EOF] ?>