X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=framework%2Fmain%2Fclasses%2Fregistry%2Fgeneric%2Fclass_GenericRegistry.php;h=f5ce8237c4882baaedd9248257f02d551b2382c1;hb=0ea73fee55f5e2a522415cdeb32c8d3ffa75abc3;hp=aa0dc486b5a8b66288afadd7ee85c290b0fad25a;hpb=53bf33122fffeedc46ea50c84cbbdd9e2aabd45d;p=core.git diff --git a/framework/main/classes/registry/generic/class_GenericRegistry.php b/framework/main/classes/registry/generic/class_GenericRegistry.php index aa0dc486..f5ce8237 100644 --- a/framework/main/classes/registry/generic/class_GenericRegistry.php +++ b/framework/main/classes/registry/generic/class_GenericRegistry.php @@ -2,13 +2,16 @@ // Own namespace namespace Org\Mxchange\CoreFramework\Registry; +// Import framework stuff +use Org\Mxchange\CoreFramework\Generic\FrameworkInterface; + /** * A registry for several data types and objects. Objects should be added by * addInstance() and therefore must implement the interface Registerable. * * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2021 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2023 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.shipsimu.org * @@ -45,17 +48,28 @@ class GenericRegistry extends BaseRegistry implements Register { * 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', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT); + } + // Is an instance there? - if (is_null(self::$registryInstance)) { + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('OBJECT-REGISTRY: self::registryInstance[%s]?=%d', $key, intval(isset((self::$registryInstances[$key]))))); + if (!isset(self::$registryInstances[$key])) { // Not yet, so create one - self::$registryInstance = new GenericRegistry(); - } // END - if + 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]; } }