&$affectedObjectClasses) { if (!is_subclass_of($entityTypeClass, EntityRestoreHandlerInterface::class)) { throw new \LogicException( sprintf( 'EntityRestoreHandler "%s" must implement %s', $entityTypeClass, EntityRestoreHandlerInterface::class ) ); } $affectedObjectClasses = array_map(function ($affectedClass) { return trim($affectedClass, '\\'); }, $affectedObjectClasses); } $this->objectManager = $objectManager; $this->classNameNormalizer = $classNameNormalizer; $this->commonRestoreHandler = $commonRestoreHandler; $this->entityTypes = $entityTypes; } public function get(string $objectClass): EntityRestoreHandlerInterface { $objectClass = $this->classNameNormalizer->execute($objectClass); foreach ($this->entityTypes as $entityTypeClass => $affectedObjectClasses) { if (in_array($objectClass, $affectedObjectClasses)) { return $this->objectManager->get($entityTypeClass); } } return $this->commonRestoreHandler; } }