Mapper.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Model\Address;
  7. use Magento\Customer\Api\Data\AddressInterface;
  8. use Magento\Framework\Api\ExtensibleDataObjectConverter;
  9. /**
  10. * Class Mapper converts Address Service Data Object to an array
  11. */
  12. class Mapper
  13. {
  14. /**
  15. * @var \Magento\Framework\Api\ExtensibleDataObjectConverter
  16. */
  17. private $extensibleDataObjectConverter;
  18. /**
  19. * @param ExtensibleDataObjectConverter $extensibleDataObjectConverter
  20. */
  21. public function __construct(ExtensibleDataObjectConverter $extensibleDataObjectConverter)
  22. {
  23. $this->extensibleDataObjectConverter = $extensibleDataObjectConverter;
  24. }
  25. /**
  26. * Convert address data object to a flat array
  27. *
  28. * @param AddressInterface $addressDataObject
  29. * @return array
  30. * TODO:: Add concrete type of AddressInterface for $addressDataObject parameter once
  31. * all references have been refactored.
  32. */
  33. public function toFlatArray($addressDataObject)
  34. {
  35. $flatAddressArray = $this->extensibleDataObjectConverter->toFlatArray(
  36. $addressDataObject,
  37. [],
  38. \Magento\Customer\Api\Data\AddressInterface::class
  39. );
  40. //preserve street
  41. $street = $addressDataObject->getStreet();
  42. if (!empty($street) && is_array($street)) {
  43. // Unset flat street data
  44. $streetKeys = array_keys($street);
  45. foreach ($streetKeys as $key) {
  46. unset($flatAddressArray[$key]);
  47. }
  48. //Restore street as an array
  49. $flatAddressArray[AddressInterface::STREET] = $street;
  50. }
  51. return $flatAddressArray;
  52. }
  53. }