]> git.mxchange.org Git - core.git/blobdiff - framework/main/classes/registry/class_BaseRegistry.php
Renamed Registry -> GenericRegistry to make it clear that this registry does
[core.git] / framework / main / classes / registry / class_BaseRegistry.php
index 9d47a9a1509a6a5bcacbbf4df83452215e7498c5..871975af6ab3e2645dd18b18a51cd51f91212ee0 100644 (file)
@@ -1,10 +1,14 @@
 <?php
 // Own namespace
-namespace CoreFramework\Registry;
+namespace Org\Mxchange\CoreFramework\Registry;
 
 // Import framework stuff
-use CoreFramework\Generic\NullPointerException;
-use CoreFramework\Object\BaseFrameworkSystem;
+use Org\Mxchange\CoreFramework\Factory\ObjectFactory;
+use Org\Mxchange\CoreFramework\Generic\NullPointerException;
+use Org\Mxchange\CoreFramework\Object\BaseFrameworkSystem;
+
+// Import SPL stuff
+use \IteratorAggregate;
 
 /**
  * A general Registry
@@ -28,7 +32,7 @@ use CoreFramework\Object\BaseFrameworkSystem;
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-class BaseRegistry extends BaseFrameworkSystem implements Registerable {
+abstract class BaseRegistry extends BaseFrameworkSystem implements Register, Registerable, IteratorAggregate {
        /**
         * Glue for generating a registry key
         */
@@ -49,8 +53,31 @@ class BaseRegistry extends BaseFrameworkSystem implements Registerable {
                // Call parent constructor
                parent::__construct($className);
 
-               // Init raw array
-               $this->initGenericArrayGroup('raw', 'generic');
+               // Init generic arrays
+               $this->initGenericArrayGroup('registry', 'generic');
+               $this->initGenericArrayGroup('registry', 'instance');
+       }
+
+       /**
+        * Returns an iterator for this whole registry.
+        *
+        * @return      $iteratorInstance       An instance of a Iterator class
+        */
+       public function getIterator () {
+               // Is it set?
+               if (is_null($this->getIteratorInstance())) {
+                       // Then instance it
+                       $iteratorInstance = ObjectFactory::createObjectByConfiguredName('registry_iterator_class', array($this));
+
+                       // ... and set it here
+                       $this->setIteratorInstance($iteratorInstance);
+               } else {
+                       // Use set iterator
+                       $iteratorInstance = $this->getIteratorInstance();
+               }
+
+               // Return it
+               return $iteratorInstance;
        }
 
        /**
@@ -78,6 +105,15 @@ class BaseRegistry extends BaseFrameworkSystem implements Registerable {
                $this->setGenericArrayKey('registry', 'instance', $instanceKey, $objectInstance);
        }
 
+       /**
+        * Getter for whole generic registry
+        *
+        * @return      $instanceRegistry       The whole generic registry array
+        */
+       public final function getGenericRegistry () {
+               return $this->getGenericSubArray('registry', 'generic');
+       }
+
        /**
         * Getter for whole instance registry
         *
@@ -100,7 +136,7 @@ class BaseRegistry extends BaseFrameworkSystem implements Registerable {
                assert(!is_array($key));
 
                // Push it
-               $this->pushValueToGenericArrayKey('raw', 'generic', $key, $value);
+               $this->pushValueToGenericArrayKey('registry', 'generic', $key, $value);
        }
 
        /**
@@ -113,12 +149,12 @@ class BaseRegistry extends BaseFrameworkSystem implements Registerable {
                assert(!is_array($key));
 
                // Default is whole array
-               $entries = $this->getGenericArray('raw');
+               $entries = $this->getGenericArray('registry');
 
                // Is $key set?
                if (!is_null($key)) {
                        // Then use this entry
-                       $entries = $this->getGenericArrayKey('raw', 'generic', $key);
+                       $entries = $this->getGenericArrayKey('registry', 'generic', $key);
                } // END - if
 
                // Return the array
@@ -182,7 +218,7 @@ class BaseRegistry extends BaseFrameworkSystem implements Registerable {
                } // END - foreach
 
                // Debug message
-               //* DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: Returning entry(' . count($entry) . ')=' . print_r($entry, TRUE));
+               //* DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: Returning entry(' . count($entry) . ')=' . print_r($entry, true));
 
                // Return it
                return $entry;