objectManager = $objectManager; $this->propertyMappers = $propertyMappers; } /** * Map input attribute properties to storage representation * * @param array $input * @param int $entityTypeId * @return array * @throws \InvalidArgumentException */ public function map(array $input, $entityTypeId) { $data = []; foreach ($this->propertyMappers as $class) { if (!is_subclass_of($class, \Magento\Eav\Model\Entity\Setup\PropertyMapperInterface::class)) { throw new \InvalidArgumentException( 'Property mapper ' . $class . ' must' . ' implement \Magento\Eav\Model\Entity\Setup\PropertyMapperInterface' ); } $data = array_replace($data, $this->objectManager->get($class)->map($input, $entityTypeId)); } return $data; } }