X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fclass_BaseFrameworkSystem.php;h=34c10efe4aae4054f3fc3a71a176eabcd141d902;hp=0eaddce17e5e361d872b15c72af8c3551ee0ee73;hb=e2223f8fd92a3f8c7ae947e195f166b87cbb6413;hpb=a34a10c85ac693d6d2c183258eb36deb353d003e
diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php
index 0eaddce1..34c10efe 100644
--- a/inc/classes/main/class_BaseFrameworkSystem.php
+++ b/inc/classes/main/class_BaseFrameworkSystem.php
@@ -26,123 +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;
+ 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;
+ private $helperInstance = NULL;
/**
- * An instance of a source
+ * An instance of a Sourceable class
*/
- private $sourceInstance = null;
+ 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
*/
@@ -166,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;
@@ -212,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;
@@ -224,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
*
@@ -239,10 +315,16 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
// ... because registries doesn't need to be configured
$this->setConfigInstance(FrameworkConfiguration::getInstance());
} // 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
*/
@@ -328,7 +410,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
* @return void
*/
public final function __set ($name, $value) {
- $this->debugOutput(sprintf("Tried to set a missing field. name=%s, value[%s]=%s",
+ $this->debugBackTrace(sprintf("Tried to set a missing field. name=%s, value[%s]=%s",
$name,
gettype($value),
$value
@@ -342,7 +424,19 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
* @return void
*/
public final function __get ($name) {
- $this->debugOutput(sprintf("Tried to get a missing field. name=%s",
+ $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
));
}
@@ -510,24 +604,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;
}
/**
@@ -747,7 +841,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
* @throws NullPointerException If the discovered application
* instance is still null
*/
- protected function prepareTemplateInstance (ManageableApplication $applicationInstance = null) {
+ protected function prepareTemplateInstance (ManageableApplication $applicationInstance = NULL) {
// Is the application instance set?
if (is_null($applicationInstance)) {
// Get the current instance
@@ -812,9 +906,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
)));
@@ -862,10 +956,16 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
/**
* Outputs a debug backtrace and stops further script execution
*
+ * @param $message An optional message to output
* @return void
*/
- public function debugBackTrace () {
+ public function debugBackTrace ($message = '') {
// Sorry, there is no other way getting this nice backtrace
+ if (!empty($message)) {
+ // Output message
+ printf("Message: %s
\n", $message);
+ } // END - if
+
print("
\n"); debug_print_backtrace(); print(""); @@ -895,7 +995,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); @@ -965,7 +1072,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), @@ -1085,7 +1192,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(); @@ -1293,8 +1400,8 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Get current time and add idle time $sleepUntil = $this->getMilliTime() + abs($milliSeconds) / 1000; - // New PHP 5.1.0 function found - $hasSlept = time_sleep_until($sleepUntil); + // 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. :( @@ -1425,7 +1532,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @param $protocolInstance An instance of an ProtocolHandler * @return void */ - public final function setProtocolInstance (ProtocolHandler $protocolInstance) { + public final function setProtocolInstance (ProtocolHandler $protocolInstance = NULL) { $this->protocolInstance = $protocolInstance; } @@ -1508,12 +1615,88 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { /** * Getter for a Sourceable instance * - * @param $sourceInstance The Sourceable instance + * @return $sourceInstance The Sourceable instance */ protected final function getSourceInstance () { return $this->sourceInstance; } + /** + * Getter for a InputStreamable instance + * + * @param $inputStreamInstance The InputStreamable instance + */ + protected final function getInputStreamInstance () { + return $this->inputStreamInstance; + } + + /** + * Setter for a InputStreamable instance + * + * @param $inputStreamInstance The InputStreamable instance + * @return void + */ + protected final function setInputStreamInstance (InputStreamable $inputStreamInstance) { + $this->inputStreamInstance = $inputStreamInstance; + } + + /** + * Getter for a OutputStreamable instance + * + * @param $outputStreamInstance The OutputStreamable instance + */ + protected final function getOutputStreamInstance () { + return $this->outputStreamInstance; + } + + /** + * Setter for a OutputStreamable instance + * + * @param $outputStreamInstance The OutputStreamable instance + * @return void + */ + protected final function setOutputStreamInstance (OutputStreamable $outputStreamInstance) { + $this->outputStreamInstance = $outputStreamInstance; + } + + /** + * Setter for handler instance + * + * @param $handlerInstance A Networkable instance + * @return void + */ + protected final function setHandlerInstance (Networkable $handlerInstance) { + $this->handlerInstance = $handlerInstance; + } + + /** + * Getter for handler instance + * + * @return $handlerInstance A Networkable instance + */ + protected final function getHandlerInstance () { + return $this->handlerInstance; + } + + /** + * Setter for visitor instance + * + * @param $visitorInstance A Visitor instance + * @return void + */ + protected final function setVisitorInstance (Visitor $visitorInstance) { + $this->visitorInstance = $visitorInstance; + } + + /** + * Getter for visitor instance + * + * @return $visitorInstance A Visitor instance + */ + protected final function getVisitorInstance () { + return $this->visitorInstance; + } + /** * Setter for raw package Data * @@ -1532,6 +1715,254 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { public function getPackageData () { return $this->packageData; } + + /** + * Converts a hexadecimal string, even with negative sign as first string to + * a decimal number using BC functions. + * + * This work is based on comment #86673 on php.net documentation page at: + *