AbstractDataAssignObserver.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Payment\Observer;
  7. use Magento\Framework\DataObject;
  8. use Magento\Framework\Event\Observer;
  9. use Magento\Framework\Event\ObserverInterface;
  10. use Magento\Payment\Model\InfoInterface;
  11. use Magento\Payment\Model\MethodInterface;
  12. /**
  13. * Class AbstractDataAssignObserver
  14. * @package Magento\Payment\Observer
  15. * @api
  16. * @since 100.0.2
  17. */
  18. abstract class AbstractDataAssignObserver implements ObserverInterface
  19. {
  20. const METHOD_CODE = 'method';
  21. const DATA_CODE = 'data';
  22. const MODEL_CODE = 'payment_model';
  23. /**
  24. * Reads method argument
  25. *
  26. * @param Observer $observer
  27. * @return MethodInterface
  28. */
  29. protected function readMethodArgument(Observer $observer)
  30. {
  31. return $this->readArgument($observer, static::METHOD_CODE, MethodInterface::class);
  32. }
  33. /**
  34. * Reads payment model argument
  35. *
  36. * @param Observer $observer
  37. * @return InfoInterface
  38. * @since 100.1.0
  39. */
  40. protected function readPaymentModelArgument(Observer $observer)
  41. {
  42. return $this->readArgument($observer, static::MODEL_CODE, InfoInterface::class);
  43. }
  44. /**
  45. * Reads data argument
  46. *
  47. * @param Observer $observer
  48. * @return DataObject
  49. */
  50. protected function readDataArgument(Observer $observer)
  51. {
  52. return $this->readArgument($observer, static::DATA_CODE, DataObject::class);
  53. }
  54. /**
  55. * Reads argument of certain type
  56. *
  57. * @param Observer $observer
  58. * @param string $key
  59. * @param string $type
  60. * @return mixed
  61. * @throws \LogicException
  62. */
  63. protected function readArgument(Observer $observer, $key, $type)
  64. {
  65. $event = $observer->getEvent();
  66. $argument = $event->getDataByKey($key);
  67. if (!$argument instanceof $type) {
  68. throw new \LogicException('Wrong argument type provided.');
  69. }
  70. return $argument;
  71. }
  72. }