Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Hydrator.php
Go to the documentation of this file.
1 <?php
7 
10 
14 class Hydrator implements HydratorInterface
15 {
19  private $dataObjectProcessor;
20 
24  private $dataObjectHelper;
25 
29  private $typeResolver;
30 
34  private $mapperPool;
35 
42  public function __construct(
43  DataObjectProcessor $dataObjectProcessor,
44  DataObjectHelper $dataObjectHelper,
45  TypeResolver $typeResolver,
46  MapperPool $mapperPool
47  ) {
48  $this->dataObjectProcessor = $dataObjectProcessor;
49  $this->dataObjectHelper = $dataObjectHelper;
50  $this->typeResolver = $typeResolver;
51  $this->mapperPool = $mapperPool;
52  }
53 
57  public function extract($entity)
58  {
59  $entityType = $this->typeResolver->resolve($entity);
60  $data = $this->dataObjectProcessor->buildOutputDataArray($entity, $entityType);
61  $mapper = $this->mapperPool->getMapper($entityType);
62  return $mapper->entityToDatabase($entityType, $data);
63  }
64 
68  public function hydrate($entity, array $data)
69  {
70  $entityType = $this->typeResolver->resolve($entity);
71  $mapper = $this->mapperPool->getMapper($entityType);
72  $data = $mapper->databaseToEntity(
74  array_merge($this->extract($entity), $data)
75  );
76  $this->dataObjectHelper->populateWithArray($entity, $data, $entityType);
77  return $entity;
78  }
79 }
__construct(DataObjectProcessor $dataObjectProcessor, DataObjectHelper $dataObjectHelper, TypeResolver $typeResolver, MapperPool $mapperPool)
Definition: Hydrator.php:42
$entity
Definition: element.phtml:22