ReadMain.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\EntityManager\Operation\Read;
  7. use Magento\Framework\EntityManager\TypeResolver;
  8. use Magento\Framework\EntityManager\MetadataPool;
  9. use Magento\Framework\EntityManager\HydratorPool;
  10. use Magento\Framework\EntityManager\Db\ReadRow;
  11. class ReadMain
  12. {
  13. /**
  14. * @var TypeResolver
  15. */
  16. private $typeResolver;
  17. /**
  18. * @var MetadataPool
  19. */
  20. private $metadataPool;
  21. /**
  22. * @var HydratorPool
  23. */
  24. private $hydratorPool;
  25. /**
  26. * @var ReadRow
  27. */
  28. private $readRow;
  29. /**
  30. * @param TypeResolver $typeResolver
  31. * @param MetadataPool $metadataPool
  32. * @param HydratorPool $hydratorPool
  33. * @param ReadRow $readRow
  34. */
  35. public function __construct(
  36. TypeResolver $typeResolver,
  37. MetadataPool $metadataPool,
  38. HydratorPool $hydratorPool,
  39. ReadRow $readRow
  40. ) {
  41. $this->typeResolver = $typeResolver;
  42. $this->metadataPool = $metadataPool;
  43. $this->hydratorPool = $hydratorPool;
  44. $this->readRow = $readRow;
  45. }
  46. /**
  47. * @param object $entity
  48. * @param string $identifier
  49. * @return object
  50. */
  51. public function execute($entity, $identifier)
  52. {
  53. $entityType = $this->typeResolver->resolve($entity);
  54. $hydrator = $this->hydratorPool->getHydrator($entityType);
  55. $entityData = $this->readRow->execute($entityType, $identifier);
  56. $entity = $hydrator->hydrate($entity, $entityData);
  57. return $entity;
  58. }
  59. }