X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fclass_BaseFrameworkSystem.php;h=7381073394eb646494a00c1563819eaf651bc5fd;hp=656e3cdc4fb603a6d1a6215551458e8b5661a32f;hb=ecf78b6c5d2d935ee62ea5f1deb018f2bd9106a4;hpb=4b88c118b615335d06bd74e444173d21aef4406c
diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php
index 656e3cdc..73810733 100644
--- a/inc/classes/main/class_BaseFrameworkSystem.php
+++ b/inc/classes/main/class_BaseFrameworkSystem.php
@@ -78,6 +78,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
*/
private $rngInstance = null;
+ /**
+ * Instance of a crypto helper
+ */
+ private $cryptoInstance = null;
+
/**
* Instance of an Iterator class
*/
@@ -123,6 +128,26 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
*/
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;
+
/**
* The real class name
*/
@@ -151,6 +176,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,8 +223,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_MISSING_LANGUAGE_HANDLER = 0x02e;
- const EXCEPTION_MISSING_FILE_IO_HANDLER = 0x02f;
+ const EXCEPTION_UNSPPORTED_OPERATION = 0x02e;
const EXCEPTION_MISSING_ELEMENT = 0x030;
const EXCEPTION_HEADERS_ALREADY_SENT = 0x031;
const EXCEPTION_DEFAULT_CONTROLLER_GONE = 0x032;
@@ -211,6 +236,46 @@ 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'
+ );
+
/**
* Protected super constructor
*
@@ -221,9 +286,9 @@ 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
+ // ... because registries doesn't need to be configured
$this->setConfigInstance(FrameworkConfiguration::getInstance());
} // END - if
}
@@ -232,7 +297,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
* Destructor reached...
*
* @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
@@ -252,8 +316,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) {
@@ -269,7 +335,9 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
$argsString .= $this->replaceControlCharacters($arg) . ' (' . gettype($arg);
// Add length if type is string
- if (gettype($arg) == 'string') $argsString .= ', '.strlen($arg);
+ if (is_string($arg)) {
+ $argsString .= ', '.strlen($arg);
+ } // END - if
// Closing bracket
$argsString .= '), ';
@@ -295,6 +363,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
*
@@ -556,15 +672,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
*
@@ -626,7 +733,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
if ((!isset($this->decimals)) || (!isset($this->thousands))) {
// Throw an exception
throw new MissingDecimalsThousandsSeperatorException($this, self::EXCEPTION_ATTRIBUTES_ARE_MISSING);
- }
+ } // END - if
// Cast the number
$value = (float) $value;
@@ -667,7 +774,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
*/
public final function addMissingTrailingSlash ($str) {
// Is there a trailing slash?
- if (substr($str, -1, 1) != '/') $str .= '/';
+ if (substr($str, -1, 1) != '/') {
+ $str .= '/';
+ } // END - if
+
+ // Return string with trailing slash
return $str;
}
@@ -694,42 +805,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 MissingLanguageHandlerException If the language sub-system
- * is not yet initialized
+ * @return $templateInstance The template engine instance
* @throws NullPointerException If the discovered application
* instance is still null
*/
- protected function prepareTemplateInstance (FrameworkInterface $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
- // Are both instances set?
- if ($appInstance->getLanguageInstance() === null) {
- // Invalid language instance
- throw new MissingLanguageHandlerException($appInstance, self::EXCEPTION_MISSING_LANGUAGE_HANDLER);
- } elseif ($appInstance->getFileIoInstance() === null) {
- // Invalid language instance
- throw new MissingFileIoHandlerException($appInstance, self::EXCEPTION_MISSING_FILE_IO_HANDLER);
- }
-
// Initialize the template engine
- $templateInstance = ObjectFactory::createObjectByConfiguredName('web_template_class', array($appInstance));
+ $templateInstance = ObjectFactory::createObjectByConfiguredName('web_template_class');
// Return the prepared instance
return $templateInstance;
@@ -803,7 +899,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
// Generate the class::method string
$methodName = 'UnknownClass->unknownMethod';
if ((isset($backtrace[1]['class'])) && (isset($backtrace[1]['function']))) {
- $methodName = $backtrace[1]['class']."->".$backtrace[1]['function'];
+ $methodName = $backtrace[1]['class'] . '->' . $backtrace[1]['function'];
} // END - if
// Construct the full message
@@ -823,17 +919,23 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
$this->debugOutput($stubMessage);
} else {
// Trigger an error
- trigger_error($stubMessage."
\n");
+ trigger_error($stubMessage . "
\n");
}
}
/**
* 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(""); @@ -855,7 +957,11 @@ 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) { @@ -1150,7 +1256,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { $this->debugOutput($message); } else { // Trigger an error - trigger_error($message."