objectManager = $objectManager; $this->structures = $structures; $this->engineResolver = $engineResolver; } /** * Create index structure * * @param array $data * @return IndexStructureInterface * @since 100.1.0 */ public function create(array $data = []) { $currentStructure = $this->engineResolver->getCurrentSearchEngine(); if (!isset($this->structures[$currentStructure])) { throw new \LogicException( 'There is no such index structure: ' . $currentStructure ); } $indexStructure = $this->objectManager->create($this->structures[$currentStructure], $data); if (!$indexStructure instanceof IndexStructureInterface) { throw new \InvalidArgumentException( $currentStructure . ' index structure doesn\'t implement '. IndexStructureInterface::class ); } return $indexStructure; } }