X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fregistry%2Fclass_BaseRegistry.php;h=85c5b3c4dde671726359ac33f59859eafd376256;hb=94f39c01ee274ffee017375906b171f9eb418ab3;hp=df0f9798fdf75a2d070da93182b4dc016397356b;hpb=89f25725096fa51850e2d4d0a2ed57906c0b23e0;p=core.git diff --git a/inc/classes/main/registry/class_BaseRegistry.php b/inc/classes/main/registry/class_BaseRegistry.php index df0f9798..85c5b3c4 100644 --- a/inc/classes/main/registry/class_BaseRegistry.php +++ b/inc/classes/main/registry/class_BaseRegistry.php @@ -2,11 +2,11 @@ /** * A general Registry * - * @author Roland Haeder + * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team * @license GNU GPL 3.0 or any newer version - * @link http://www.ship-simu.org + * @link http://www.shipsimu.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -41,6 +41,9 @@ class BaseRegistry extends BaseFrameworkSystem implements Registerable { protected function __construct ($className) { // Call parent constructor parent::__construct($className); + + // Init raw array + $this->initGenericArrayGroup('raw', 'generic'); } /** @@ -65,7 +68,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,8 +89,11 @@ 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); + $this->pushValueToGenericArrayKey('raw', 'generic', $key, $value); } /** @@ -96,6 +102,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,28 +126,46 @@ 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(); + // Debug message + //* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: Checking arrayKey=' . $arrayKey . ',lookFor=' . $lookFor); + // "Walk" over all entries foreach ($this->getEntries($arrayKey) as $key => $value) { // Debug message - //* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('REGISTRY[' . __LINE__ . ']: Checking key=' . $key . ',value=' . $value . ',lookFor=' . $lookFor); + //* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: Checking key=' . $key . ',value=' . $value . ',lookFor=' . $lookFor); // If $value matches the $lookFor, we need to look for more entries for this! if ($lookFor == $value) { // Look for more entries foreach ($this->getEntries() as $key2 => $value2) { - // Debug message - //* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('REGISTRY[' . __LINE__ . ']: Checking key2=' . $key2 . ',value2=' . print_r($value2, true) . ',lookFor=' . $lookFor); - - // Both keys must match! - if (($key == $key2) || (isset($value2[$key]))) { + // Now "walk" through all entries, if an array is returned + if (is_array($value2)) { // Debug message - //* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('REGISTRY[' . __LINE__ . ']: Adding ' . $value2[$key] . ' ...'); + //* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: Checking key2=' . $key2 . ',value2()=' . count($value2) . ',lookFor=' . $lookFor); + + // "Walk" through all of them + foreach ($value2 as $key3 => $value3) { + // $value3 needs to be an array + assert(is_array($value3)); + + // Debug message + //* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: Checking key=' . $key . ',key3=' . $key3 . ',isset()=' . isset($value3[$key]) . ' ...'); - // Then add it - $entry[$key2] = $value2[$key]; + // Both keys must match! + if (($key == $key3) || (isset($value3[$key]))) { + // Debug message + //* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: Adding ' . $value3[$key] . ' ...'); + + // Then add it + $entry[$key3] = $value3[$key]; + } // END - if + } // END - foreach } // END - if } // END - foreach @@ -147,6 +174,9 @@ class BaseRegistry extends BaseFrameworkSystem implements Registerable { } // END - if } // END - foreach + // Debug message + //* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: Returning entry(' . count($entry) . ')=' . print_r($entry, TRUE)); + // Return it return $entry; }