Renamed Registry -> GenericRegistry to make it clear that this registry does
[core.git] / framework / main / classes / registry / class_BaseRegistry.php
index 7c79ce3b3e40898ddce87bcd399c80b24b21bcc2..871975af6ab3e2645dd18b18a51cd51f91212ee0 100644 (file)
@@ -1,11 +1,11 @@
 <?php
 // Own namespace
-namespace CoreFramework\Registry;
+namespace Org\Mxchange\CoreFramework\Registry;
 
 // Import framework stuff
-use CoreFramework\Factory\ObjectFactory;
-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;
@@ -32,7 +32,7 @@ use \IteratorAggregate;
  * 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 Register, Registerable, IteratorAggregate {
+abstract class BaseRegistry extends BaseFrameworkSystem implements Register, Registerable, IteratorAggregate {
        /**
         * Glue for generating a registry key
         */
@@ -54,8 +54,8 @@ class BaseRegistry extends BaseFrameworkSystem implements Register, Registerable
                parent::__construct($className);
 
                // Init generic arrays
-               $this->initGenericArrayGroup('raw', 'generic');
-               $this->initGenericArrayGroup('raw', 'instance');
+               $this->initGenericArrayGroup('registry', 'generic');
+               $this->initGenericArrayGroup('registry', 'instance');
        }
 
        /**
@@ -64,8 +64,20 @@ class BaseRegistry extends BaseFrameworkSystem implements Register, Registerable
         * @return      $iteratorInstance       An instance of a Iterator class
         */
        public function getIterator () {
-               // Instance + return it
-               return ObjectFactory::createObjectByConfiguredName('registry_iterator_class', array($this));
+               // 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;
        }
 
        /**
@@ -93,6 +105,15 @@ class BaseRegistry extends BaseFrameworkSystem implements Register, 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
         *
@@ -115,7 +136,7 @@ class BaseRegistry extends BaseFrameworkSystem implements Register, Registerable
                assert(!is_array($key));
 
                // Push it
-               $this->pushValueToGenericArrayKey('raw', 'generic', $key, $value);
+               $this->pushValueToGenericArrayKey('registry', 'generic', $key, $value);
        }
 
        /**
@@ -128,12 +149,12 @@ class BaseRegistry extends BaseFrameworkSystem implements Register, 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