X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=inc%2Fclasses%2Fmain%2Fclass_BaseFrameworkSystem.php;h=3b0a939c50725eee298d4335a61265863ecb4537;hb=6ea47cac34fd28b9d8157ceb1d643f7bfc6a4379;hp=2a0c80768b2b2c7fd2928af4a88e30716f82d640;hpb=2e472bcbab0c23f070d39cfc66bef639706f0868;p=shipsimu.git
diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php
index 2a0c807..3b0a939 100644
--- a/inc/classes/main/class_BaseFrameworkSystem.php
+++ b/inc/classes/main/class_BaseFrameworkSystem.php
@@ -33,6 +33,36 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
*/
private static $langInstance = null;
+ /**
+ * Debug instance
+ */
+ private static $debugInstance = null;
+
+ /**
+ * Instance of a request class
+ */
+ private $requestInstance = null;
+
+ /**
+ * Instance of a response class
+ */
+ private $responseInstance = null;
+
+ /**
+ * Search criteria instance
+ */
+ private $searchInstance = null;
+
+ /**
+ * The file I/O instance for the template loader
+ */
+ private $fileIoInstance = null;
+
+ /**
+ * Resolver instance
+ */
+ private $resolverInstance = null;
+
/**
* The real class name
*/
@@ -58,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.... *
***********************/
@@ -115,12 +140,13 @@ 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_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;
+ const EXCEPTION_ASSERTION_FAILED = 0x037;
/**
* In the super constructor these system classes shall be ignored or else
@@ -151,16 +177,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
}
/**
@@ -173,10 +200,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()));
@@ -184,7 +211,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()
));
}
@@ -245,7 +272,8 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
$argsString = sprintf("!INVALID:%s!", $args);
}
- $this->getDebugInstance()->output(sprintf("[%s::%s] Stub! Args: %s",
+ // Output stub message
+ $this->getDebugInstance()->output(sprintf("[%s->%s] Stub! Args: %s",
$this->__toString(),
$methodName,
$argsString
@@ -267,7 +295,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
$this->systemclasses[] = $this->getConfigInstance()->readConfig('app_helper_class');
// Set debug instance
- $this->setDebugInstance(DebugMiddleware::createDebugMiddleware($this->getConfigInstance()->readConfig('debug_engine')));
+ $this->setDebugInstance(DebugMiddleware::createDebugMiddleware($this->getConfigInstance()->readConfig('debug_class')));
// Get output instance and set it
$outputInstance = ObjectFactory::createObjectByConfiguredName('web_engine', array($this->getConfigInstance()->readConfig('web_content_type')));
@@ -287,6 +315,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
*
@@ -301,29 +367,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;
}
/**
@@ -407,6 +474,44 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
self::$applicationInstance = $applicationInstance;
}
+ /**
+ * Setter for request instance
+ *
+ * @param $requestInstance An instance of a Requestable class
+ * @return void
+ */
+ public final function setRequestInstance (Requestable $requestInstance) {
+ $this->requestInstance = $requestInstance;
+ }
+
+ /**
+ * Getter for request instance
+ *
+ * @return $requestInstance An instance of a Requestable class
+ */
+ public final function getRequestInstance () {
+ return $this->requestInstance;
+ }
+
+ /**
+ * Setter for response instance
+ *
+ * @param $responseInstance An instance of a Responseable class
+ * @return void
+ */
+ public final function setResponseInstance (Responseable $responseInstance) {
+ $this->responseInstance = $responseInstance;
+ }
+
+ /**
+ * Getter for response instance
+ *
+ * @return $responseInstance An instance of a Responseable class
+ */
+ public final function getResponseInstance () {
+ return $this->responseInstance;
+ }
+
/**
* Getter for $realClass
*
@@ -585,10 +690,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());
}
@@ -596,8 +701,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 (
@@ -612,11 +717,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);
}
/**
@@ -758,20 +863,20 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
/**
* Private getter for file IO instance
*
- * @return $fileIOInstance An instance to the file I/O sub-system
+ * @return $fileIoInstance An instance to the file I/O sub-system
*/
protected final function getFileIoInstance () {
- return $this->fileIOInstance;
+ return $this->fileIoInstance;
}
/**
* Setter for file I/O instance
*
- * @param $fileIOInstance An instance to the file I/O sub-system
+ * @param $fileIoInstance An instance to the file I/O sub-system
* @return void
*/
- public final function setFileIoInstance (FileIoHandler $fileIOInstance) {
- $this->fileIOInstance = $fileIOInstance;
+ public final function setFileIoInstance (FileIoHandler $fileIoInstance) {
+ $this->fileIoInstance = $fileIoInstance;
}
/**
@@ -821,7 +926,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
}
// Initialize the template engine
- $tplEngine = ObjectFactory::createObjectByConfiguredName('tpl_engine', array($fqfn, $appInstance->getLanguageInstance(), $appInstance->getFileIoInstance()));
+ $tplEngine = ObjectFactory::createObjectByConfiguredName('template_class', array($fqfn, $appInstance->getLanguageInstance(), $appInstance->getFileIoInstance()));
// Return the prepared instance
return $tplEngine;
@@ -839,7 +944,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
);
// Output it
- ApplicationEntryPoint::app_die(sprintf("%s debug output:%s", $this->__toString(), $content));
+ ApplicationEntryPoint::app_die(sprintf("%s debug output:
\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 * @@ -886,24 +1035,55 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @return $className Generated class name */ public function convertToClassName ($str) { + // Init class name $className = ""; + + // Convert all dashes in underscores + $str = str_replace("-", "_", $str); + + // Now use that underscores to get classname parts for hungarian style foreach (explode("_", $str) as $strPart) { + // Make the class name part lower case and first upper case $className .= ucfirst(strtolower($strPart)); - } + } // END - foreach + + // Return class name return $className; } /** - * Outputs a debug backtrace and stops further script execution + * Marks up the code by adding e.g. line numbers * - * @return void + * @param $phpCode Unmarked PHP code + * @return $markedCode Marked PHP code */ - public function debugBacktrace () { - // Sorry, there is no other way getting this nice backtrace - print "
\n"; - debug_print_backtrace(); - print ""; - exit; + 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("