From 4b9bcae0028374f03ff2c75f7016ea1bf77483bc Mon Sep 17 00:00:00 2001 From: Sebastian Hopfe Date: Fri, 8 Apr 2022 15:25:20 +0200 Subject: [PATCH] fix - loadModule reinitializes modules if the module has already been loaded #32 Signed-off-by: Sebastian Hopfe --- src/ModuleManager.php | 10 ++++++---- test/ModuleManagerTest.php | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/ModuleManager.php b/src/ModuleManager.php index 39e6227..8709d9d 100644 --- a/src/ModuleManager.php +++ b/src/ModuleManager.php @@ -6,8 +6,10 @@ use Laminas\EventManager\EventManager; use Laminas\EventManager\EventManagerInterface; +use ReflectionClass; use Traversable; +use function class_exists; use function current; use function get_class; use function is_array; @@ -141,7 +143,7 @@ public function loadModule($module) // when no class-string is found, try search for a namespace if (class_exists($verifiedModulName)) { - $moduleReflection = new \ReflectionClass($verifiedModulName); + $moduleReflection = new ReflectionClass($verifiedModulName); if (isset($this->loadedModules[$moduleReflection->getNamespaceName()])) { return $this->loadedModules[$moduleReflection->getNamespaceName()]; @@ -337,15 +339,15 @@ protected function attachDefaultListeners($events) /** * determines the class string of the module * - * @param $moduleName + * @param string $moduleName * @return string */ private function getVerifiedModuleName($moduleName) { $verifiedModulName = $moduleName; - if (!class_exists($moduleName) && class_exists($moduleName.'\Module')) { - $verifiedModulName = $moduleName.'\Module'; + if (!class_exists($moduleName) && class_exists($moduleName . '\Module')) { + $verifiedModulName = $moduleName . '\Module'; } return $verifiedModulName; diff --git a/test/ModuleManagerTest.php b/test/ModuleManagerTest.php index ec6d504..f945de7 100644 --- a/test/ModuleManagerTest.php +++ b/test/ModuleManagerTest.php @@ -111,14 +111,14 @@ public function testModuleLoadingBehaviorWithModuleClassStrings() $moduleManager->loadModules(); // should not cause any problems - $moduleManager->loadModule(\SomeModule\Module::class); // should not cause any problems + $moduleManager->loadModule(Module::class); // should not cause any problems $modules = $moduleManager->getLoadedModules(true); // BarModule already loaded so nothing happens self::assertSame(1, count($modules)); } public function testModuleLoadingBehaviorWithModuleClassStringsVersion2() { - $moduleManager = new ModuleManager([\SomeModule\Module::class], $this->events); + $moduleManager = new ModuleManager([Module::class], $this->events); $this->defaultListeners->attach($this->events); $modules = $moduleManager->getLoadedModules(); self::assertSame(0, count($modules));