]> git.mxchange.org Git - shipsimu.git/blobdiff - inc/classes/exceptions/class_FrameworkException.php
A performed action now always requires an action class
[shipsimu.git] / inc / classes / exceptions / class_FrameworkException.php
index 34e48023f10574ef46ed46bae26509f22e941384..31a7ba642df74aa2b33ab1d0e267c822488efb5f 100644 (file)
@@ -6,7 +6,7 @@
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
+ * @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
  *
@@ -21,7 +21,7 @@
  * 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 <http://www.gnu.org/licenses/>.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
 abstract class FrameworkException extends ReflectionException {
        /**
@@ -29,11 +29,16 @@ abstract class FrameworkException extends ReflectionException {
         */
        private $backTrace = array();
 
+       /**
+        * Extra data
+        */
+       private $extraData = "";
+
        /**
         * The super constructor for all exceptions
         *
-        * @param               $message                The non-optional message for the exception
-        * @param               $code           An optional code for better debugging
+        * @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) {
@@ -44,8 +49,30 @@ abstract class FrameworkException extends ReflectionException {
                $message = (string) $message;
                $code    = (int)    $code;
 
+               // In emergency exit?
+               if (defined('EMERGENCY_EXIT_CALLED')) {
+                       // Output message
+                       printf("[%s:] Message: %s, Backtrace: <pre>%s</pre>",
+                               $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
        }
 
        /**
@@ -103,7 +130,7 @@ abstract class FrameworkException extends ReflectionException {
                        } // END - if
 
                        // Prepare argument infos
-                       $info = "<em id=\"debug_args\">{$info}</em>";
+                       $info = "<em id=\"debug_args_".$dbgIndex."\">{$info}</em>";
 
                        // File detection
                        $file = "Unknown file";
@@ -118,7 +145,7 @@ abstract class FrameworkException extends ReflectionException {
                        } // END - if
 
                        // The message
-                       $dbgMsg .= "\t at <em id=\"debug_id\">".$dbgIndex."</em> <em id=\"debug_file\">".$file."</em> (<em id=\"debug_line\">".$line."</em>) -&gt; ".$dbgInfo['function']."(".$info.")<br />\n";
+                       $dbgMsg .= "\t at <em id=\"debug_id_".$dbgIndex."\">".$dbgIndex."</em> <em id=\"debug_file_".$dbgIndex."\">".$file."</em> (<em id=\"debug_line_".$dbgIndex."\">".$line."</em>) -&gt; ".$dbgInfo['function']."(".$info.")<br />\n";
                } // END - if
                $dbgMsg .= "Debug backtrace end<br />\n";
 
@@ -150,6 +177,25 @@ abstract class FrameworkException extends ReflectionException {
                // Return it
                return $hexCode;
        }
+
+       /**
+        * Setter for extra data
+        *
+        * @param       $extraData      Extra data to store
+        * @return      void
+        */
+       protected final function setExtraData ($extraData) {
+               $this->extraData = $extraData;
+       }
+
+       /**
+        * Getter for extra data
+        *
+        * @return      $extraData      Extra data to store
+        */
+       public final function getExtraData () {
+               return $this->extraData;
+       }
 }
 
 // [EOF]