InterpretationStrategy.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\View\Element\Message;
  7. use Magento\Framework\Message\MessageInterface;
  8. use Magento\Framework\View\Element\Message\Renderer\RenderersPool;
  9. class InterpretationStrategy implements InterpretationStrategyInterface
  10. {
  11. /**
  12. * @var RenderersPool
  13. */
  14. private $renderersPool;
  15. /**
  16. * @var MessageConfigurationsPool
  17. */
  18. private $messageConfigurationsPool;
  19. /**
  20. * @param RenderersPool $renderersPool
  21. * @param MessageConfigurationsPool $messageConfigurationsPool
  22. */
  23. public function __construct(
  24. RenderersPool $renderersPool,
  25. MessageConfigurationsPool $messageConfigurationsPool
  26. ) {
  27. $this->renderersPool = $renderersPool;
  28. $this->messageConfigurationsPool = $messageConfigurationsPool;
  29. }
  30. /**
  31. * Interpret message
  32. *
  33. * @param MessageInterface $message
  34. * @return string
  35. * @throws \LogicException
  36. */
  37. public function interpret(MessageInterface $message)
  38. {
  39. $messageConfiguration = $this->messageConfigurationsPool->getMessageConfiguration(
  40. $message->getIdentifier()
  41. );
  42. if (null === $messageConfiguration) {
  43. throw new \LogicException();
  44. }
  45. $renderer = $this->renderersPool->get($messageConfiguration['renderer']);
  46. if (null === $renderer) {
  47. throw new \LogicException();
  48. }
  49. return $renderer->render($message, $messageConfiguration['data']);
  50. }
  51. }