From: Roland Häder Date: Sun, 23 Jun 2013 19:00:53 +0000 (+0000) Subject: Patches for making new generic array working X-Git-Url: https://git.mxchange.org/?p=core.git;a=commitdiff_plain;h=9e932cc034299d06e592484de82628fd978df094 Patches for making new generic array working --- diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php index d146ed4b..09d13a57 100644 --- a/inc/classes/main/class_BaseFrameworkSystem.php +++ b/inc/classes/main/class_BaseFrameworkSystem.php @@ -348,10 +348,13 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { $this->setRealClass('DestructedObject'); } elseif ((defined('DEBUG_DESTRUCTOR')) && (is_object($this->getDebugInstance()))) { // Already destructed object - self::createDebugInstance(__CLASS__)->debugOutput(sprintf("[%s:] The object %s is already destroyed.", + self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:] The object %s is already destroyed.', __CLASS__, $this->__toString() )); + } else { + // Do not call this twice + trigger_error(__METHOD__ . ': Called twice.'); } } @@ -2214,6 +2217,25 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } } + /** + * 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 * @@ -2227,31 +2249,19 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // 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 * @@ -2268,9 +2278,12 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } // 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; } @@ -2290,9 +2303,12 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } // 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; } @@ -2347,7 +2363,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { */ 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)) { @@ -2357,6 +2373,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // 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; @@ -2379,6 +2396,20 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { 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 * @@ -2398,6 +2429,21 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { 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 * diff --git a/inc/classes/main/criteria/class_BaseCriteria.php b/inc/classes/main/criteria/class_BaseCriteria.php index dfa0d4ee..aa8a401b 100644 --- a/inc/classes/main/criteria/class_BaseCriteria.php +++ b/inc/classes/main/criteria/class_BaseCriteria.php @@ -303,7 +303,7 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { } // END - foreach // Now check if expected criteria counts match - $matches = ($counted == $this->countGenericArrayGroup('criteria', $criteriaType))); + $matches = ($counted == $this->countGenericArrayGroup('criteria', $criteriaType)); // Return the result return $matches; @@ -416,7 +416,7 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { */ public final function count ($criteriaType = 'default') { // Return it - return $this->countGenericArrayGroup('criteria', $criteriaType)); + return $this->countGenericArrayGroup('criteria', $criteriaType); } /** diff --git a/inc/classes/main/filter/class_FilterChain.php b/inc/classes/main/filter/class_FilterChain.php index ef173181..4f15fa13 100644 --- a/inc/classes/main/filter/class_FilterChain.php +++ b/inc/classes/main/filter/class_FilterChain.php @@ -61,7 +61,7 @@ class FilterChain extends BaseFrameworkSystem implements Registerable { * @return $filters The filters array holding all filter instances */ protected function getFilters () { - return $this->getGenericArray('filters'); + return $this->getGenericArrayKey('filters', 'generic', 'dummy'); } /** @@ -75,6 +75,9 @@ class FilterChain extends BaseFrameworkSystem implements Registerable { // Run all filters //* DEBUG */ self::createDebugInstance(__CLASS__)->debugOutput('COUNT=' . $this->countGenericArray('filters')); foreach ($this->getFilters() as $filterInstance) { + // Must be an instance of Filterable + assert($filterInstance instanceof Filterable); + // Try to execute this filter try { //* DEBUG */ self::createDebugInstance(__CLASS__)->debugOutput('FILTER: ' . $filterInstance->__toString() . ': Processing started.'); diff --git a/inc/classes/main/registry/class_BaseRegistry.php b/inc/classes/main/registry/class_BaseRegistry.php index df0f9798..f39457cf 100644 --- a/inc/classes/main/registry/class_BaseRegistry.php +++ b/inc/classes/main/registry/class_BaseRegistry.php @@ -65,7 +65,7 @@ class BaseRegistry extends BaseFrameworkSystem implements Registerable { * @return void */ public function addInstance ($instanceKey, Registerable $objectInstance) { - $this->pushValueToGenericArrayElement('registry', 'instance', $instanceKey, $objectInstance); + $this->setGenericArrayKey('registry', 'instance', $instanceKey, $objectInstance); } /** @@ -86,6 +86,9 @@ class BaseRegistry extends BaseFrameworkSystem implements Registerable { * @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); } @@ -96,6 +99,9 @@ class BaseRegistry extends BaseFrameworkSystem implements Registerable { * @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'); @@ -117,6 +123,9 @@ class BaseRegistry extends BaseFrameworkSystem implements Registerable { * @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(); diff --git a/inc/classes/main/stacker/class_BaseStacker.php b/inc/classes/main/stacker/class_BaseStacker.php index 40f7c051..bf4a7667 100644 --- a/inc/classes/main/stacker/class_BaseStacker.php +++ b/inc/classes/main/stacker/class_BaseStacker.php @@ -55,7 +55,7 @@ class BaseStacker extends BaseFrameworkSystem { } // END - if // Initialize the given stack - $this->pushValueToGenericArrayElement('stacks', $stackerName, 'max_size', $this->getConfigInstance()->getConfigEntry('stacker_' . $stackerName . '_max_size')); + $this->initGenericArray('stacks', $stackerName, 'entries'); } /** @@ -176,7 +176,7 @@ class BaseStacker extends BaseFrameworkSystem { } // Now get the last value - $value = $this->getGenericArrayKey('stacks', $stackerName, 'entries', $this->getStackCount($stackerName) - 1); + $value = $this->getGenericArrayElement('stacks', $stackerName, 'entries', $this->getStackCount($stackerName) - 1); // Return it return $value;