*/
class ObjectRegistry extends BaseRegistry implements ObjectRegister {
/**
- * Instance of this class
+ * Instances of this class
*/
- private static $registryInstance = NULL;
+ private static $registryInstances = [];
/**
* Protected constructor
* 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];
}
/**