autoloadService->getExtension($extensionName); } catch (ClassNotFoundException) { continue; } if (!$extension->available()) { continue; } $hookClassList = $extension->getHooks(); foreach ($hookClassList as $hookClass) { $ref = new ReflectionClass($hookClass); foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { $attributes = $method->getAttributes(Hook::class); foreach ($attributes as $attr) { $hookNameList = (array)$attr->newInstance()->hook; foreach ($hookNameList as $hookName) { $this->event->listen($hookName, [$hookClass, $method->getName()]); } } } } } } }