X-Git-Url: https://git.mxchange.org/?p=shipsimu.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fclass_BaseFrameworkSystem.php;h=ea3201f20a0cfbcb0c5d5555504e607d7d737696;hp=b725a85658143712d8edd560802c46ff2aad221b;hb=b3e47fb693fb8d40868158b0192b3392b309d97a;hpb=58e0fb00204ed031ec9d312b0fa0f6f693711aae diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php index b725a85..ea3201f 100644 --- a/inc/classes/main/class_BaseFrameworkSystem.php +++ b/inc/classes/main/class_BaseFrameworkSystem.php @@ -33,6 +33,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { */ private static $langInstance = null; + /** + * Debug instance + */ + private static $debugInstance = null; + /** * Instance of a request class */ @@ -48,6 +53,16 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { */ private $searchInstance = null; + /** + * The file I/O instance for the template loader + */ + private $fileIoInstance = null; + + /** + * Resolver instance + */ + private $resolverInstance = null; + /** * The real class name */ @@ -73,11 +88,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { */ private $decimals = ","; // German - /** - * The file I/O instance for the template loader - */ - private $fileIoInstance = null; - /*********************** * Exception codes.... * ***********************/ @@ -130,14 +140,12 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { const EXCEPTION_MISSING_LANGUAGE_HANDLER = 0x02e; const EXCEPTION_MISSING_FILE_IO_HANDLER = 0x02f; const EXCEPTION_MISSING_ELEMENT = 0x030; - const EXCEPTION_INVALID_COMMAND = 0x031; - const EXCEPTION_INVALID_CONTROLLER = 0x032; - const EXCEPTION_HEADERS_ALREADY_SENT = 0x033; - const EXCEPTION_DEFAUL_CONTROLLER_GONE = 0x034; - const EXCEPTION_CLASS_NOT_FOUND = 0x035; - const EXCEPTION_REQUIRED_INTERFACE_MISSING = 0x036; - const EXCEPTION_FATAL_ERROR = 0x037; - const EXCEPTION_FILE_NOT_FOUND = 0x038; + const EXCEPTION_HEADERS_ALREADY_SENT = 0x031; + const EXCEPTION_DEFAUL_CONTROLLER_GONE = 0x032; + const EXCEPTION_CLASS_NOT_FOUND = 0x033; + const EXCEPTION_REQUIRED_INTERFACE_MISSING = 0x034; + const EXCEPTION_FATAL_ERROR = 0x035; + const EXCEPTION_FILE_NOT_FOUND = 0x036; /** * In the super constructor these system classes shall be ignored or else @@ -168,16 +176,17 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** * Private super constructor * + * @param $className Name of the class * @return void */ - protected function __construct ($class) { + protected function __construct ($className) { // Set real class - $this->setRealClass($class); + $this->setRealClass($className); // Initialize the class if the registry is there if ((class_exists('Registry')) && (Registry::isInitialized() === false)) { $this->initInstance(); - } + } // END - if } /** @@ -190,10 +199,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { if ($this->__toString() != "DestructedObject") { // Debug message if ((defined('DEBUG_DESTRUCTOR')) && (is_object($this->getDebugInstance()))) { - $this->getDebugInstance()->output(sprintf("[%s:] Das Objekt %s wird zerstört.
\n", + $this->getDebugInstance()->output(sprintf("[%s:] Das Objekt %s wird zerstört.", __CLASS__, $this->__toString() )); - } + } // END - if // Destroy all informations about this class but keep some text about it alive $this->setObjectDescription(sprintf("Entferntes Objekt %s", $this->__toString())); @@ -201,7 +210,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { $this->resetUniqueID(); } elseif ((defined('DEBUG_DESTRUCTOR')) && (is_object($this->getDebugInstance()))) { // Already destructed object - $this->getDebugInstance()->output(sprintf("[%s:] Das Objekt %s wurde bereits zerstört.
\n", + $this->getDebugInstance()->output(sprintf("[%s:] Das Objekt %s wurde bereits zerstört.", __CLASS__, $this->__toString() )); } @@ -262,6 +271,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { $argsString = sprintf("!INVALID:%s!", $args); } + // Output stub message $this->getDebugInstance()->output(sprintf("[%s::%s] Stub! Args: %s", $this->__toString(), $methodName, @@ -304,6 +314,44 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } } + /** + * Setter for search instance + * + * @param $searchInstance Searchable criteria instance + * @return void + */ + public final function setSearchInstance (LocalSearchCriteria $searchInstance) { + $this->searchInstance = $searchInstance; + } + + /** + * Getter for search instance + * + * @return $searchInstance Searchable criteria instance + */ + public final function getSearchInstance () { + return $this->searchInstance; + } + + /** + * Setter for resolver instance + * + * @param $resolverInstance Instance of a command resolver class + * @return void + */ + public final function setResolverInstance (Resolver $resolverInstance) { + $this->resolverInstance = $resolverInstance; + } + + /** + * Getter for resolver instance + * + * @return $resolverInstance Instance of a command resolver class + */ + public final function getResolverInstance () { + return $this->resolverInstance; + } + /** * Setter for language instance * @@ -318,29 +366,30 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** * Getter for configuration instance * - * @return $cfhInstance - Configuration instance + * @return $cfgInstance Configuration instance */ protected final function getConfigInstance () { - return Registry::getRegistry()->getInstance('config'); + $cfgInstance = Registry::getRegistry()->getInstance('config'); + return $cfgInstance; } /** * Setter for debug instance * - * @param $debugInstance The instance for debug output class + * @param $debugInstance The instance for debug output class * @return void */ public final function setDebugInstance (DebugMiddleware $debugInstance) { - Registry::getRegistry()->addInstance('debug', $debugInstance); + self::$debugInstance = $debugInstance; } /** * Getter for debug instance * - * @return $debug - Instance to class DebugConsoleOutput or DebugWebOutput + * @return $debugInstance Instance to class DebugConsoleOutput or DebugWebOutput */ public final function getDebugInstance () { - return Registry::getRegistry()->getInstance('debug'); + return self::$debugInstance; } /** @@ -640,10 +689,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** * Validate if given object is the same as current * - * @param $object An object instance for comparison with this class + * @param $object An object instance for comparison with this class * @return boolean The result of comparing both's unique ID */ - public final function equals ($object) { + public final function equals (FrameworkInterface $object) { return ($this->getUniqueID() == $object->getUniqueID()); } @@ -651,8 +700,8 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * Compare if both simulation part description and class name matches * (shall be enougth) * - * @param $itemInstance An object instance to an other class - * @return boolean The result of comparing class name simulation part description + * @param $itemInstance An object instance to an other class + * @return boolean The result of comparing class name simulation part description */ public function itemMatches ($itemInstance) { return ( @@ -667,11 +716,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** * Compare class name of this and given class name * - * @param $class The class name as string from the other class + * @param $className The class name as string from the other class * @return boolean The result of comparing both class names */ - public final function isClass ($class) { - return ($this->__toString() == $class); + public final function isClass ($className) { + return ($this->__toString() == $className); } /** @@ -938,6 +987,46 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } } + /** + * Outputs a debug backtrace and stops further script execution + * + * @return void + */ + public function debugBacktrace () { + // Sorry, there is no other way getting this nice backtrace + print "
\n";
+		debug_print_backtrace();
+		print "
"; + exit; + } + + /** + * Outputs a debug message wether to debug instance (should be set!) or dies with or pints the message + * + * @param $message Message we shall send out... + * @param $doPrint Wether we shall print or die here which last is the default + * @return void + */ + public function debugOutput ($message, $doPrint = false) { + // Get debug instance + $debugInstance = $this->getDebugInstance(); + + // Is the debug instance there? + if (is_object($debugInstance)) { + // Use debug output handler + $debugInstance->output($message); + if (!$doPrint) die(); // Die here if not printed + } else { + // Put directly out + // DO NOT REWRITE THIS TO app_die() !!! + if ($doPrint) { + print($message); + } else { + die($message); + } + } + } + /** * Converts e.g. a command from URL to a valid class by keeping out bad characters * @@ -962,35 +1051,38 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } /** - * Outputs a debug backtrace and stops further script execution - * - * @return void - */ - public function debugBacktrace () { - // Sorry, there is no other way getting this nice backtrace - print "
\n";
-		debug_print_backtrace();
-		print "
"; - exit; - } - - /** - * Setter for search instance + * Marks up the code by adding e.g. line numbers * - * @param $searchInstance Searchable criteria instance - * @return void + * @param $phpCode Unmarked PHP code + * @return $markedCode Marked PHP code */ - public final function setSearchInstance (LocalSearchCriteria $searchInstance) { - $this->searchInstance = $searchInstance; - } + public function markupCode ($phpCode) { + // Get last error + $errorArray = error_get_last(); + + // Init the code with error message + $markedCode = ""; + if (is_array($errorArray)) { + // Get error infos + $markedCode = sprintf("
File: %s, Line: %s, Message: %s, Type: %s
", + basename($errorArray['file']), + $errorArray['line'], + $errorArray['message'], + $errorArray['type'] + ); + } // END - if + + // Add line number to the code + foreach (explode("\n", $phpCode) as $lineNo=>$code) { + // Add line numbers + $markedCode .= sprintf("%s: %s\n", + ($lineNo+1), + htmlentities($code, ENT_QUOTES) + ); + } // END - foreach - /** - * Getter for search instance - * - * @return $searchInstance Searchable criteria instance - */ - public final function getSearchInstance () { - return $this->searchInstance; + // Return the code + return $markedCode; } }