X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fclass_BaseFrameworkSystem.php;h=10ce072b8d43c420bd3e71fab6dd23b94f559715;hp=485264212e4c82a58bd55ad776eb3543f243439a;hb=1d0f8e0fa7346ab3df9d0ee44c4c957047711ddc;hpb=e51607c0f33062258ba0a07b79b8e1f34fd6b832 diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php index 48526421..10ce072b 100644 --- a/inc/classes/main/class_BaseFrameworkSystem.php +++ b/inc/classes/main/class_BaseFrameworkSystem.php @@ -26,108 +26,148 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** * Instance of a request class */ - private $requestInstance = null; + private $requestInstance = NULL; /** * Instance of a response class */ - private $responseInstance = null; + private $responseInstance = NULL; /** * Search criteria instance */ - private $searchInstance = null; + private $searchInstance = NULL; /** * Update criteria instance */ - private $updateInstance = null; + private $updateInstance = NULL; /** * The file I/O instance for the template loader */ - private $fileIoInstance = null; + private $fileIoInstance = NULL; /** * Resolver instance */ - private $resolverInstance = null; + private $resolverInstance = NULL; /** * Template engine instance */ - private $templateInstance = null; + private $templateInstance = NULL; /** * Database result instance */ - private $resultInstance = null; + private $resultInstance = NULL; /** * Instance for user class */ - private $userInstance = null; + private $userInstance = NULL; /** * A controller instance */ - private $controllerInstance = null; + private $controllerInstance = NULL; /** * Instance of a RNG */ - private $rngInstance = null; + private $rngInstance = NULL; + + /** + * Instance of a crypto helper + */ + private $cryptoInstance = NULL; /** * Instance of an Iterator class */ - private $iteratorInstance = null; + private $iteratorInstance = NULL; /** * Instance of the list */ - private $listInstance = null; + private $listInstance = NULL; /** * Instance of a menu */ - private $menuInstance = null; + private $menuInstance = NULL; /** * Instance of the image */ - private $imageInstance = null; + private $imageInstance = NULL; /** * Instance of the stacker */ - private $stackerInstance = null; + private $stackerInstance = NULL; /** * A Compressor instance */ - private $compressorInstance = null; + private $compressorInstance = NULL; /** * A Parseable instance */ - private $parserInstance = null; + private $parserInstance = NULL; /** * A ProtocolHandler instance */ - private $protocolInstance = null; + private $protocolInstance = NULL; /** * A database wrapper instance */ - private $databaseInstance = null; + private $databaseInstance = NULL; + + /** + * A helper instance for the form + */ + private $helperInstance = NULL; + + /** + * An instance of a Sourceable class + */ + private $sourceInstance = NULL; + + /** + * An instance of a InputStreamable class + */ + private $inputStreamInstance = NULL; + + /** + * An instance of a OutputStreamable class + */ + private $outputStreamInstance = NULL; + + /** + * Networkable handler instance + */ + private $handlerInstance = NULL; + + /** + * Visitor handler instance + */ + private $visitorInstance = NULL; /** * The real class name */ private $realClass = 'BaseFrameworkSystem'; + /** + * An instance of a database wrapper class + */ + private $wrapperInstance = NULL; + /** * Thousands seperator */ @@ -151,6 +191,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /*********************** * Exception codes.... * ***********************/ + // @todo Try to clean these constants up const EXCEPTION_IS_NULL_POINTER = 0x001; const EXCEPTION_IS_NO_OBJECT = 0x002; @@ -197,6 +238,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { const EXCEPTION_ATTRIBUTES_ARE_MISSING = 0x02b; const EXCEPTION_ARRAY_ELEMENTS_MISSING = 0x02c; const EXCEPTION_TEMPLATE_ENGINE_UNSUPPORTED = 0x02d; + const EXCEPTION_UNSPPORTED_OPERATION = 0x02e; const EXCEPTION_MISSING_ELEMENT = 0x030; const EXCEPTION_HEADERS_ALREADY_SENT = 0x031; const EXCEPTION_DEFAULT_CONTROLLER_GONE = 0x032; @@ -209,6 +251,55 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { const EXCEPTION_DATABASE_UPDATED_NOT_ALLOWED = 0x039; const EXCEPTION_FILTER_CHAIN_INTERCEPTED = 0x040; + /** + * Hexadecimal->Decimal translation array + */ + private static $hexdec = array( + '0' => 0, + '1' => 1, + '2' => 2, + '3' => 3, + '4' => 4, + '5' => 5, + '6' => 6, + '7' => 7, + '8' => 8, + '9' => 9, + 'a' => 10, + 'b' => 11, + 'c' => 12, + 'd' => 13, + 'e' => 14, + 'f' => 15 + ); + + /** + * Decimal->hexadecimal translation array + */ + private static $dechex = array( + 0 => '0', + 1 => '1', + 2 => '2', + 3 => '3', + 4 => '4', + 5 => '5', + 6 => '6', + 7 => '7', + 8 => '8', + 9 => '9', + 10 => 'a', + 11 => 'b', + 12 => 'c', + 13 => 'd', + 14 => 'e', + 15 => 'f' + ); + + /** + * Startup time in miliseconds + */ + private static $startupTime = 0; + /** * Protected super constructor * @@ -219,18 +310,23 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Set real class $this->setRealClass($className); - // Set configuration instance if no registry + // Set configuration instance if no registry ... if (!$this instanceof Register) { - // Because registries doesn't need to be configured - $this->setConfigInstance(FrameworkConfiguration::getInstance()); + // ... because registries doesn't need to be configured + $this->setConfigInstance(FrameworkConfiguration::getSelfInstance()); + } // END - if + + // Is the startup time set? (0 cannot be true anymore) + if (self::$startupTime == 0) { + // Then set it + self::$startupTime = microtime(true); } // END - if } /** - * Destructor reached... + * Destructor for all classes * * @return void - * @todo This is old code. Do we still need this old lost code? */ public function __destruct() { // Flush any updated entries to the database @@ -250,8 +346,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } /** - * The call method where all non-implemented methods end up + * The __call() method where all non-implemented methods end up * + * @param $methodName Name of the missing method + * @args $args Arguments passed to the method * @return void */ public final function __call ($methodName, $args) { @@ -266,8 +364,19 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Add the type $argsString .= $this->replaceControlCharacters($arg) . ' (' . gettype($arg); - // Add length if type is string - if (gettype($arg) == 'string') $argsString .= ', '.strlen($arg); + if (is_string($arg)) { + // Add length for strings + $argsString .= ', '.strlen($arg); + } elseif (is_array($arg)) { + // .. or size if array + $argsString .= ', '.count($arg); + } elseif ($arg === true) { + // ... is boolean 'true' + $argsString .= ', true'; + } elseif ($arg === false) { + // ... is boolean 'true' + $argsString .= ', false'; + } // Closing bracket $argsString .= '), '; @@ -293,6 +402,54 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { return null; } + /** + * Getter for $realClass + * + * @return $realClass The name of the real class (not BaseFrameworkSystem) + */ + public function __toString () { + return $this->realClass; + } + + /** + * Magic function to catch setting of missing but set class fields/attributes + * + * @param $name Name of the field/attribute + * @param $value Value to store + * @return void + */ + public final function __set ($name, $value) { + $this->debugBackTrace(sprintf("Tried to set a missing field. name=%s, value[%s]=%s", + $name, + gettype($value), + $value + )); + } + + /** + * Magic function to catch getting of missing fields/attributes + * + * @param $name Name of the field/attribute + * @return void + */ + public final function __get ($name) { + $this->debugBackTrace(sprintf("Tried to get a missing field. name=%s", + $name + )); + } + + /** + * Magic function to catch unsetting of missing fields/attributes + * + * @param $name Name of the field/attribute + * @return void + */ + public final function __unset ($name) { + $this->debugBackTrace(sprintf("Tried to unset a missing field. name=%s", + $name + )); + } + /** * Setter for database result instance * @@ -456,24 +613,24 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** * Setter for database instance * - * @param $dbInstance The instance for the database connection (forced DatabaseConnection) + * @param $databaseInstance The instance for the database connection (forced DatabaseConnection) * @return void */ - public final function setDatabaseInstance (DatabaseConnection $dbInstance) { - Registry::getRegistry()->addInstance('db_instance', $dbInstance); + public final function setDatabaseInstance (DatabaseConnection $databaseInstance) { + Registry::getRegistry()->addInstance('db_instance', $databaseInstance); } /** * Getter for database layer * - * @return $dbInstance The database layer instance + * @return $databaseInstance The database layer instance */ public final function getDatabaseInstance () { // Get instance - $dbInstance = Registry::getRegistry()->getInstance('db_instance'); + $databaseInstance = Registry::getRegistry()->getInstance('db_instance'); // Return instance - return $dbInstance; + return $databaseInstance; } /** @@ -554,15 +711,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { return $this->responseInstance; } - /** - * Getter for $realClass - * - * @return $realClass The name of the real class (not BaseFrameworkSystem) - */ - public function __toString () { - return $this->realClass; - } - /** * Setter for the real class name * @@ -696,31 +844,27 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * Prepare the template engine (WebTemplateEngine by default) for a given * application helper instance (ApplicationHelper by default). * - * @param $appInstance An application helper instance or + * @param $applicationInstance An application helper instance or * null if we shall use the default * @return $templateInstance The template engine instance - * @throws NullPointerException If the template engine could not - * be initialized - * @throws UnsupportedTemplateEngineException If $templateInstance is an - * unsupported template engine * @throws NullPointerException If the discovered application * instance is still null */ - protected function prepareTemplateInstance (ManageableApplication $appInstance = null) { + protected function prepareTemplateInstance (ManageableApplication $applicationInstance = NULL) { // Is the application instance set? - if (is_null($appInstance)) { + if (is_null($applicationInstance)) { // Get the current instance - $appInstance = $this->getApplicationInstance(); + $applicationInstance = $this->getApplicationInstance(); // Still null? - if (is_null($appInstance)) { + if (is_null($applicationInstance)) { // Thrown an exception throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); } // END - if } // END - if // Initialize the template engine - $templateInstance = ObjectFactory::createObjectByConfiguredName('web_template_class', array($appInstance)); + $templateInstance = ObjectFactory::createObjectByConfiguredName('web_template_class'); // Return the prepared instance return $templateInstance; @@ -758,7 +902,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { ApplicationEntryPoint::app_die(sprintf("
\n"); debug_print_backtrace(); print(""); @@ -846,11 +996,22 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { if (is_object($debugInstance)) { // Use debug output handler $debugInstance->output($message); - if ($doPrint === false) die(); // Die here if not printed + + if ($doPrint === false) { + // Die here if not printed + die(); + } // END - if } else { // Put directly out if ($doPrint === true) { - print($message); + // Are debug times enabled? + if ($this->getConfigInstance()->getConfigEntry('debug_output_timings') == 'Y') { + // Output it first + print($this->getPrintableExecutionTime()); + } // END - if + + // Print message + print($message . chr(10)); } else { // DO NOT REWRITE THIS TO app_die() !!! die($message); @@ -920,7 +1081,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } // END - if // Add line number to the code - foreach (explode("\n", $phpCode) as $lineNo => $code) { + foreach (explode(chr(10), $phpCode) as $lineNo => $code) { // Add line numbers $markedCode .= sprintf("%s: %s\n", ($lineNo + 1), @@ -1040,7 +1201,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { */ public final function getField ($fieldName) { // Default field value - $fieldValue = null; + $fieldValue = NULL; // Get result instance $resultInstance = $this->getResultInstance(); @@ -1141,7 +1302,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { $this->debugOutput($message); } else { // Trigger an error - trigger_error($message."