X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fclass_BaseFrameworkSystem.php;h=15040a6b17645b45347c59a2b5123b3270a3b74d;hp=f9474ca7567244eec20a7c39e415263c9b76507a;hb=3b6949feb00eae49b2ffd14aae2a92756676c4c8;hpb=3e1fbf30a631cf1cd64562b69228452c49e0033f diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php index f9474ca7..15040a6b 100644 --- a/inc/classes/main/class_BaseFrameworkSystem.php +++ b/inc/classes/main/class_BaseFrameworkSystem.php @@ -169,12 +169,12 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { private $wrapperInstance = NULL; /** - * Thousands seperator + * Thousands separator */ private $thousands = '.'; // German /** - * Decimal seperator + * Decimal separator */ private $decimals = ','; // German @@ -251,7 +251,9 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { const EXCEPTION_DATABASE_UPDATED_NOT_ALLOWED = 0x039; const EXCEPTION_FILTER_CHAIN_INTERCEPTED = 0x040; - // Hexadecimal->Decimal translation array + /** + * Hexadecimal->Decimal translation array + */ private static $hexdec = array( '0' => 0, '1' => 1, @@ -271,7 +273,9 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { 'f' => 15 ); - // Decimal->hexadecimal translation array + /** + * Decimal->hexadecimal translation array + */ private static $dechex = array( 0 => '0', 1 => '1', @@ -291,6 +295,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { 15 => 'f' ); + /** + * Startup time in miliseconds + */ + private static $startupTime = 0; + /** * Protected super constructor * @@ -304,12 +313,18 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Set configuration instance if no registry ... if (!$this instanceof Register) { // ... because registries doesn't need to be configured - $this->setConfigInstance(FrameworkConfiguration::getInstance()); + $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 */ @@ -349,10 +364,19 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Add the type $argsString .= $this->replaceControlCharacters($arg) . ' (' . gettype($arg); - // Add length if type is string if (is_string($arg)) { + // Add length for strings $argsString .= ', '.strlen($arg); - } // END - if + } 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 .= '), '; @@ -375,7 +399,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { )); // Return nothing - return null; + return NULL; } /** @@ -690,7 +714,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** * Setter for the real class name * - * @param $realClass Class name (string) + * @param $realClass Class name (string) * @return void */ public final function setRealClass ($realClass) { @@ -733,21 +757,21 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** * Formats computer generated price values into human-understandable formats - * with thousand and decimal seperators. + * with thousand and decimal separators. * * @param $value The in computer format value for a price * @param $currency The currency symbol (use HTML-valid characters!) * @param $decNum Number of decimals after commata * @return $price The for the current language formated price string - * @throws MissingDecimalsThousandsSeperatorException If decimals or - * thousands seperator + * @throws MissingDecimalsThousandsSeparatorException If decimals or + * thousands separator * is missing */ public function formatCurrency ($value, $currency = '€', $decNum = 2) { // Are all required attriutes set? if ((!isset($this->decimals)) || (!isset($this->thousands))) { // Throw an exception - throw new MissingDecimalsThousandsSeperatorException($this, self::EXCEPTION_ATTRIBUTES_ARE_MISSING); + throw new MissingDecimalsThousandsSeparatorException($this, self::EXCEPTION_ATTRIBUTES_ARE_MISSING); } // END - if // Cast the number @@ -784,8 +808,8 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** * Appends a trailing slash to a string * - * @param $str A string (maybe) without trailing slash - * @return $str A string with an auto-appended trailing slash + * @param $str A string (maybe) without trailing slash + * @return $str A string with an auto-appended trailing slash */ public final function addMissingTrailingSlash ($str) { // Is there a trailing slash? @@ -800,7 +824,7 @@ 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; @@ -809,7 +833,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** * 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) { @@ -878,7 +902,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { ApplicationEntryPoint::app_die(sprintf("
%s debug output:
%s
\nLoaded includes:
%s
", $this->__toString(), $content, - ClassLoader::getInstance()->getPrintableIncludeList() + ClassLoader::getSelfInstance()->getPrintableIncludeList() )); } @@ -891,9 +915,9 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { protected function replaceControlCharacters ($str) { // Replace them $str = str_replace( - "\r", '[r]', str_replace( - "\n", '[n]', str_replace( - "\t", '[t]', + chr(13), '[r]', str_replace( + chr(10), '[n]', str_replace( + chr(9) , '[t]', $str ))); @@ -925,7 +949,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Is the extra message given? if (!empty($message)) { // Then add it as well - $stubMessage .= sprintf(" Message: %s", $message); + $stubMessage .= sprintf(' Message: %s', $message); } // END - if // Debug instance is there? @@ -934,7 +958,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { $this->debugOutput($stubMessage); } else { // Trigger an error - trigger_error($stubMessage . "
\n"); + trigger_error($stubMessage . '
' + chr(10)); } } @@ -951,9 +975,9 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { printf("Message: %s
\n", $message); } // END - if - print("
\n");
+		print('
');
 		debug_print_backtrace();
-		print("
"); + print('
'); exit(); } @@ -980,7 +1004,14 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } 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); @@ -1041,7 +1072,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Init the code with error message if (is_array($errorArray)) { // Get error infos - $markedCode = sprintf("
File: %s, Line: %s, Message: %s, Type: %s
", + $markedCode = sprintf('
File: %s, Line: %s, Message: %s, Type: %s
', basename($errorArray['file']), $errorArray['line'], $errorArray['message'], @@ -1050,9 +1081,9 @@ 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", + $markedCode .= sprintf('%s: %s' + chr(10), ($lineNo + 1), htmlentities($code, ENT_QUOTES) ); @@ -1381,8 +1412,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // New PHP 5.1.0 function found, ignore errors $hasSlept = @time_sleep_until($sleepUntil); } else { - // My Sun Station doesn't have that function even with latest PHP - // package. :( + /* + * My Sun station doesn't have that function even with latest PHP + * package. :( + */ usleep($milliSeconds * 1000); } @@ -1640,10 +1673,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** * Setter for handler instance * - * @param $handlerInstance A Networkable instance + * @param $handlerInstance An instance of a Handleable class * @return void */ - protected final function setHandlerInstance (Networkable $handlerInstance) { + protected final function setHandlerInstance (Handleable $handlerInstance) { $this->handlerInstance = $handlerInstance; } @@ -1897,6 +1930,64 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Return it return $responseType; } + + /** + * Gets a cache key from Criteria instance + * + * @param $criteriaInstance An instance of a Criteria class + * @param $onlyKeys Only use these keys for a cache key + * @return $cacheKey A cache key suitable for lookup/storage purposes + */ + protected function getCacheKeyByCriteria (Criteria $criteriaInstance, $onlyKeys = array()) { + // Generate it + $cacheKey = sprintf("%s@%s", + $this->__toString(), + $criteriaInstance->getCacheKey($onlyKeys) + ); + + // And return it + //* NOISY-DEBUG: */ $this->debugOutput($this->__toString() . ': cacheKey=' . $cacheKey); + return $cacheKey; + } + + /** + * Getter for startup time in miliseconds + * + * @return $startupTime Startup time in miliseconds + */ + protected function getStartupTime () { + return self::$startupTime; + } + + /** + * "Getter" for a printable currently execution time in nice braces + * + * @return $executionTime Current execution time in nice braces + */ + protected function getPrintableExecutionTime () { + // Caculate the execution time + $executionTime = microtime(true) - $this->getStartupTime(); + + // Pack it in nice braces + $executionTime = sprintf('[ %01.5f ] ', $executionTime); + + // And return it + return $executionTime; + } + + /** + * Hashes a given string with a simple but stronger hash function (no salts) + * + * @param $str The string to be hashed + * @return $hash The hash from string $str + */ + public function hashString ($str) { + // Hash given string with (better secure) hasher + $hash = mhash(MHASH_SHA256, $str); + + // Return it + return $hash; + } } // [EOF]