]> git.mxchange.org Git - core.git/blobdiff - framework/main/classes/registry/object/class_ObjectRegistry.php
Continued:
[core.git] / framework / main / classes / registry / object / class_ObjectRegistry.php
index a5b7aa9a4183b7d2dac246809c6ec0d4ba55b09e..b3c810c947b30352835f54219040f69ace45c230 100644 (file)
@@ -35,9 +35,9 @@ use \InvalidArgumentException;
  */
 class ObjectRegistry extends BaseRegistry implements ObjectRegister {
        /**
-        * Instance of this class
+        * Instances of this class
         */
-       private static $registryInstance = NULL;
+       private static $registryInstances = [];
 
        /**
         * Protected constructor
@@ -61,17 +61,28 @@ class ObjectRegistry extends BaseRegistry implements ObjectRegister {
         * Singleton getter for self instance. This class has no factory pattern
         * because here is no need for special parameters.
         *
+        * @param       $key    Key for for this instance
         * @return      $registryInstance       Instance of this class
+        * @throws      InvalidArgumentException        If a parameter has an invalid value
         */
-       public static final function getRegistry () {
+       public static final function getRegistry (string $key) {
+               // Check parameter
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('OBJECT-REGISTRY: key=%s - CALLED!', $key));
+               if (empty($key)) {
+                       // Throw IAE
+                       throw new InvalidArgumentException('Parameter "key" is empty');
+               }
+
                // Is an instance there?
-               if (is_null(self::$registryInstance)) {
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('OBJECT-REGISTRY: self::registryInstance[%s][]=%s', $key, gettype(self::$registryInstances[$key])));
+               if (is_null(self::$registryInstances[$key])) {
                        // Not yet, so create one
-                       self::$registryInstance = new ObjectRegistry();
+                       self::$registryInstances[$key] = new ObjectRegistry();
                }
 
                // Return the instance
-               return self::$registryInstance;
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('OBJECT-REGISTRY: self::registryInstance[%s]=%s - EXIT!', $key, self::$registryInstances[$key]->__toString()));
+               return self::$registryInstances[$key];
        }
 
        /**