Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Read.php
Go to the documentation of this file.
1 <?php
7 
15 
19 class Read implements ReadInterface
20 {
24  private $metadataPool;
25 
29  private $hydratorPool;
30 
34  private $eventManager;
35 
39  private $typeResolver;
40 
44  private $readMain;
45 
49  private $readAttributes;
50 
54  private $readExtensions;
55 
65  public function __construct(
66  MetadataPool $metadataPool,
67  HydratorPool $hydratorPool,
68  TypeResolver $typeResolver,
69  EventManager $eventManager,
70  ReadMain $readMain,
71  ReadAttributes $readAttributes,
72  ReadExtensions $readExtensions
73  ) {
74  $this->metadataPool = $metadataPool;
75  $this->hydratorPool = $hydratorPool;
76  $this->typeResolver = $typeResolver;
77  $this->eventManager = $eventManager;
78  $this->readMain = $readMain;
79  $this->readAttributes = $readAttributes;
80  $this->readExtensions = $readExtensions;
81  }
82 
86  public function execute($entity, $identifier, $arguments = [])
87  {
88  $entityType = $this->typeResolver->resolve($entity);
89  $metadata = $this->metadataPool->getMetadata($entityType);
90  $hydrator = $this->hydratorPool->getHydrator($entityType);
91  $this->eventManager->dispatch(
92  'entity_manager_load_before',
93  [
94  'entity_type' => $entityType,
95  'identifier' => $identifier,
96  'arguments' => $arguments
97  ]
98  );
99  $this->eventManager->dispatchEntityEvent(
100  $entityType,
101  'load_before',
102  [
103  'identifier' => $identifier,
104  'entity' => $entity,
105  'arguments' => $arguments
106  ]
107  );
108  $entity = $this->readMain->execute($entity, $identifier);
109  $entityData = array_merge($hydrator->extract($entity), $arguments);
110  if (isset($entityData[$metadata->getLinkField()])) {
111  $entity = $this->readAttributes->execute($entity, $arguments);
112  $entity = $this->readExtensions->execute($entity, $arguments);
113  }
114  $this->eventManager->dispatchEntityEvent(
115  $entityType,
116  'load_after',
117  [
118  'entity' => $entity,
119  'arguments' => $arguments
120  ]
121  );
122  $this->eventManager->dispatch(
123  'entity_manager_load_after',
124  [
125  'entity_type' => $entityType,
126  'entity' => $entity,
127  'arguments' => $arguments
128  ]
129  );
130 
131  return $entity;
132  }
133 }
execute($entity, $identifier, $arguments=[])
Definition: Read.php:86
$entity
Definition: element.phtml:22
$arguments
__construct(MetadataPool $metadataPool, HydratorPool $hydratorPool, TypeResolver $typeResolver, EventManager $eventManager, ReadMain $readMain, ReadAttributes $readAttributes, ReadExtensions $readExtensions)
Definition: Read.php:65