X-Git-Url: https://git.mxchange.org/?p=shipsimu.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fclass_BaseFrameworkSystem.php;h=75b851f85ef69b80fd3b5f8d88a652e65d8c1259;hp=8dbbdaa9ab71a2827fdaab8433143381fce5cb76;hb=b226bbefe6bc09bcd75432c3c3ba32bf7da45b71;hpb=0a4c7d2793ad13bfe4798f947ef39529f32b6567 diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php index 8dbbdaa..75b851f 100644 --- a/inc/classes/main/class_BaseFrameworkSystem.php +++ b/inc/classes/main/class_BaseFrameworkSystem.php @@ -149,6 +149,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { const EXCEPTION_INVALID_CONTROLLER = 0x032; const EXCEPTION_HEADERS_ALREADY_SENT = 0x033; const EXCEPTION_DEFAUL_CONTROLLER_GONE = 0x034; + const EXCEPTION_CLASS_NOT_FOUND = 0x035; /** * In the super constructor these system classes shall be ignored or else @@ -218,8 +219,50 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { */ public final function __call ($methodName, $args) { // Implode all given arguments - $argsString = implode("|", $args); - if (empty($argsString)) $argsString = "NULL"; + $argsString = ""; + if (empty($args)) { + // No arguments + $argsString = "NULL"; + } elseif (is_array($args)) { + // Some arguments are there + foreach ($args as $arg) { + // Check the type + if (is_bool($arg)) { + // Boolean! + if ($arg) $argsString .= "true(bool)"; else $argsString .= "false(bool)"; + } elseif (is_int($arg)) { + // Integer + $argsString .= $arg."(int)"; + } elseif (is_float($arg)) { + // Floating point + $argsString .= $arg."(float)"; + } elseif ($arg instanceof BaseFramework) { + // Own object instance + $argsString .= $arg->__toString()."(Object)"; + } elseif (is_object($arg)) { + // External object + $argsString .= "unknown object(!)"; + } elseif (is_array($arg)) { + // Array + $argsString .= "Array(array)"; + } elseif (is_string($arg)) { + // String + $argsString .= "\"".$arg."\"(string)"; + } else { + // Unknown type (please report!) + $argsString .= $arg."(unknown!)"; + } + + // Add comma + $argsString .= ", "; + } + + // Remove last comma + if (substr($argsString, -2, 1) === ",") $argsString = substr($argsString, 0, -2); + } else { + // Invalid arguments! + $argsString = sprintf("!INVALID:%s!", $args); + } $this->getDebugInstance()->output(sprintf("[%s::%s] Stub! Args: %s", $this->__toString(), @@ -731,7 +774,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * * @return $fileIOInstance An instance to the file I/O sub-system */ - protected final function getFileIOInstance () { + protected final function getFileIoInstance () { return $this->fileIOInstance; } @@ -741,7 +784,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @param $fileIOInstance An instance to the file I/O sub-system * @return void */ - public final function setFileIOInstance (FileIOHandler $fileIOInstance) { + public final function setFileIoInstance (FileIoHandler $fileIOInstance) { $this->fileIOInstance = $fileIOInstance; } @@ -805,7 +848,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { if ($appInstance->getLanguageInstance() === null) { // Invalid language instance throw new MissingLanguageHandlerException($appInstance, self::EXCEPTION_MISSING_LANGUAGE_HANDLER); - } elseif ($appInstance->getFileIOInstance() === null) { + } elseif ($appInstance->getFileIoInstance() === null) { // Invalid language instance throw new MissingFileIoHandlerException($appInstance, self::EXCEPTION_MISSING_FILE_IO_HANDLER); } @@ -815,7 +858,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { $eval = sprintf("\$tplEngine = %s::create%s( \"%s\", \$appInstance->getLanguageInstance(), - \$appInstance->getFileIOInstance() + \$appInstance->getFileIoInstance() );", $this->getConfigInstance()->readConfig("tpl_engine"), $this->getConfigInstance()->readConfig("tpl_engine"), @@ -858,6 +901,70 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Output it ApplicationEntryPoint::app_die("Debug output:".$content); } + + /** + * Output a partial stub message for the caller method + * + * @param $message An optional message to display + * @return void + */ + protected function partialStub ($message = "") { + // Get the backtrace + $backtrace = debug_backtrace(); + + // Generate the class::method string + $methodName = "UnknownClass::unknownMethod"; + if ((isset($backtrace[1]['class'])) && (isset($backtrace[1]['function']))) { + $methodName = $backtrace[1]['class']."::".$backtrace[1]['function']; + } + + // Construct the full message + $stubMessage = sprintf("[%s:] Partial stub!", + $methodName + ); + + // Is the extra message given? + if (!empty($message)) { + // Then add it as well + $stubMessage .= sprintf(" Message: %s", $message); + } + + // Debug instance is there? + if (!is_null($this->getDebugInstance())) { + // Output stub message + $this->getDebugInstance()->output($stubMessage); + } else { + // Trigger an error + trigger_error($stubMessage."
\n"); + } + } + + /** + * Converts e.g. a command from URL to a valid class by keeping out bad characters + * + * @param $str The string, what ever it is needs to be converted + * @return $className Generated class name + */ + public function convertToClassName ($str) { + $className = ""; + foreach (explode("_", $str) as $strPart) { + $className .= ucfirst(strtolower($strPart)); + } + return $className; + } + + /** + * 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; + } } // [EOF]