$this->setRealClass('DestructedObject');
} elseif ((defined('DEBUG_DESTRUCTOR')) && (is_object($this->getDebugInstance()))) {
// Already destructed object
- self::createDebugInstance(__CLASS__)->debugOutput(sprintf("[%s:] The object <span class=\"object_name\">%s</span> is already destroyed.",
+ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:] The object <span class="object_name">%s</span> is already destroyed.',
__CLASS__,
$this->__toString()
));
+ } else {
+ // Do not call this twice
+ trigger_error(__METHOD__ . ': Called twice.');
}
}
}
}
+ /**
+ * Initializes given generic array
+ *
+ * @param $keyGroup Main group for the key
+ * @param $subGroup Sub group for the key
+ * @param $key Key to use
+ * @return void
+ */
+ protected final function initGenericArray ($keyGroup, $subGroup, $key) {
+ // Is it already set?
+ if ($this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
+ // Already initialized
+ trigger_error(__METHOD__ . ':keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ' already initialized.');
+ } // END - if
+
+ // Initialize it
+ $this->genericArray[$keyGroup][$subGroup][$key] = array();
+ }
+
/**
* Pushes an element to a generic key
*
// Is it set?
if (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
// Initialize array
- $this->genericArray[$keyGroup][$subGroup][$key] = array();
+ $this->initGenericArray($keyGroup, $subGroup, $key);
} // END - if
// Then push it
+ //* DEBUG: */ print(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',value=' . $value . PHP_EOL);
$count = array_push($this->genericArray[$keyGroup][$subGroup][$key], $value);
// Return count
+ //* DEBUG: */ print(__METHOD__ . ': genericArray=' . print_r($this->genericArray[$keyGroup][$subGroup][$key], TRUE));
+ //* DEBUG: */ print(__METHOD__ . ': count=' . $count . PHP_EOL);
return $count;
}
- /**
- * Sets a value in given generic array key/element
- *
- * @param $keyGroup Main group for the key
- * @param $subGroup Sub group for the key
- * @param $key Key to set
- * @param $element Element to set
- * @param $value Value to set
- * @return void
- */
- protected final function setGenericArrayElement ($keyGroup, $subGroup, $key, $element, $value) {
- // Then set it
- $this->genericArray[$keyGroup][$subGroup][$key][$element] = $value;
- }
-
/**
* Pops an element from a generic group
*
} // END - if
// Then "pop" it
+ //* DEBUG: */ print(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ' pop-ing entry ...' . PHP_EOL);
$value = array_pop($this->genericArray[$keyGroup][$subGroup][$key]);
// Return value
+ //* DEBUG: */ print(__METHOD__ . ': genericArray=' . print_r($this->genericArray[$keyGroup][$subGroup][$key], TRUE));
+ //* DEBUG: */ print(__METHOD__ . ': value[' . gettype($value) . ']=' . $value . PHP_EOL);
return $value;
}
} // END - if
// Then "shift" it
+ //* DEBUG: */ print(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ' shifting entry ...' . PHP_EOL);
$value = array_shift($this->genericArray[$keyGroup][$subGroup][$key]);
// Return value
+ //* DEBUG: */ print(__METHOD__ . ': genericArray=' . print_r($this->genericArray[$keyGroup][$subGroup][$key], TRUE));
+ //* DEBUG: */ print(__METHOD__ . ': value[' . gettype($value) . ']=' . $value . PHP_EOL);
return $value;
}
*/
protected final function countGenericArrayElements ($keyGroup, $subGroup, $key) {
// Is it there?
- if (!$this->isGenericArrayKeySet($keyGroup, $subGroup)) {
+ if (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
// Abort here
trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ' not found.');
} elseif (!$this->isValidGenericArrayGroup($keyGroup, $subGroup)) {
// Then count it
$count = count($this->genericArray[$keyGroup][$subGroup][$key]);
+ //* DEBUG: */ print(__METHOD__ . ':keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',count=' . $count . PHP_EOL);
// Return it
return $count;
return $this->genericArray[$keyGroup];
}
+ /**
+ * Setter for generic array key
+ *
+ * @param $keyGroup Key group to get
+ * @param $subGroup Sub group for the key
+ * @param $key Key to unset
+ * @param $value Mixed value from generic array element
+ * @return void
+ */
+ protected final function setGenericArrayKey ($keyGroup, $subGroup, $key, $value) {
+ // Set value here
+ $this->genericArray[$keyGroup][$subGroup][$key] = $value;
+ }
+
/**
* Getter for generic array key
*
return $this->genericArray[$keyGroup][$subGroup][$key];
}
+ /**
+ * Sets a value in given generic array key/element
+ *
+ * @param $keyGroup Main group for the key
+ * @param $subGroup Sub group for the key
+ * @param $key Key to set
+ * @param $element Element to set
+ * @param $value Value to set
+ * @return void
+ */
+ protected final function setGenericArrayElement ($keyGroup, $subGroup, $key, $element, $value) {
+ // Then set it
+ $this->genericArray[$keyGroup][$subGroup][$key][$element] = $value;
+ }
+
/**
* Getter for generic array element
*
* @return void
*/
public function addInstance ($instanceKey, Registerable $objectInstance) {
- $this->pushValueToGenericArrayElement('registry', 'instance', $instanceKey, $objectInstance);
+ $this->setGenericArrayKey('registry', 'instance', $instanceKey, $objectInstance);
}
/**
* @return void
*/
public final function addEntry ($key, $value) {
+ // Key must not be an array
+ assert(!is_array($key));
+
// Push it
$this->pushValueToGenericArrayElement('raw', 'generic', $key, $value);
}
* @return $entries An array with entries from this registry
*/
public final function getEntries ($key = NULL) {
+ // Key must not be an array
+ assert(!is_array($key));
+
// Default is whole array
$entries = $this->getGenericArray('raw');
* @return $entry An array with all keys
*/
public function getArrayFromKey ($arrayKey, $lookFor) {
+ // Key must not be an array
+ assert(!is_array($arrayKey));
+
// Init array
$entry = array();