/** * Factory class to create instance of HookContainer class defined in MetaData::capabilities. * @param MetaData $metaData * @param null $requestedHookType * @return null|\Zikula\Component\HookDispatcher\AbstractContainer */ public function getHookContainerInstance(MetaData $metaData, $requestedHookType = null) { foreach ([self::SUBSCRIBER_TYPE, self::PROVIDER_TYPE] as $type) { if (isset($metaData->getCapabilities()[$type]['class']) && (!isset($requestedHookType) || $type == $requestedHookType)) { $hookContainerClassName = $metaData->getCapabilities()[$type]['class']; $reflection = new \ReflectionClass($hookContainerClassName); if ($reflection->isSubclassOf('Zikula\\Component\\HookDispatcher\\AbstractContainer')) { return new $hookContainerClassName($this->translator); } } } return null; }