CollectionProcessor.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Api\SearchCriteria;
  7. use Magento\Framework\Api\SearchCriteriaInterface;
  8. use Magento\Framework\Data\Collection\AbstractDb;
  9. class CollectionProcessor implements CollectionProcessorInterface
  10. {
  11. /**
  12. * @var CollectionProcessorInterface[]
  13. */
  14. private $processors;
  15. /**
  16. * @param CollectionProcessorInterface[] $processors
  17. */
  18. public function __construct(
  19. array $processors
  20. ) {
  21. $this->processors = $processors;
  22. }
  23. /**
  24. * @inheritDoc
  25. */
  26. public function process(SearchCriteriaInterface $searchCriteria, AbstractDb $collection)
  27. {
  28. foreach ($this->processors as $name => $processor) {
  29. if (!($processor instanceof CollectionProcessorInterface)) {
  30. throw new \InvalidArgumentException(
  31. sprintf('Processor %s must implement %s interface.', $name, CollectionProcessorInterface::class)
  32. );
  33. }
  34. $processor->process($searchCriteria, $collection);
  35. }
  36. }
  37. }