Composite.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. /**
  3. * Composite Phrase renderer
  4. *
  5. * Copyright © Magento, Inc. All rights reserved.
  6. * See COPYING.txt for license details.
  7. */
  8. namespace Magento\Framework\Phrase\Renderer;
  9. use Magento\Framework\Phrase\RendererInterface;
  10. class Composite implements RendererInterface
  11. {
  12. /**
  13. * @var RendererInterface[]
  14. */
  15. protected $_renderers;
  16. /**
  17. * @param \Magento\Framework\Phrase\RendererInterface[] $renderers
  18. * @throws \InvalidArgumentException
  19. */
  20. public function __construct(array $renderers)
  21. {
  22. foreach ($renderers as $renderer) {
  23. if (!$renderer instanceof RendererInterface) {
  24. throw new \InvalidArgumentException(
  25. sprintf('Instance of the phrase renderer is expected, got %s instead.', get_class($renderer))
  26. );
  27. }
  28. }
  29. $this->_renderers = $renderers;
  30. }
  31. /**
  32. * Render source text
  33. *
  34. * @param [] $source
  35. * @param [] $arguments
  36. * @return string
  37. */
  38. public function render(array $source, array $arguments = [])
  39. {
  40. $result = $source;
  41. foreach ($this->_renderers as $render) {
  42. $result[] = $render->render($result, $arguments);
  43. }
  44. return end($result);
  45. }
  46. }