EncoderIterator.php 954 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Service\ServiceIterator;
  4. use App\Service\Export\Encoder\EncoderInterface;
  5. /**
  6. * Permet d'itérer sur les services d'encodage.
  7. */
  8. class EncoderIterator
  9. {
  10. /**
  11. * Pour l'injection des services, voir config/services.yaml, section 'TAG Services'.
  12. *
  13. * @param iterable<EncoderInterface> $encoders
  14. */
  15. public function __construct(
  16. private readonly iterable $encoders,
  17. ) {
  18. }
  19. /**
  20. * Itère sur les services d'encodage disponibles et
  21. * retourne le premier qui supporte ce type de requête.
  22. */
  23. public function getEncoderFor(string $format): EncoderInterface
  24. {
  25. /** @var EncoderInterface $encoder */
  26. foreach ($this->encoders as $encoder) {
  27. if ($encoder->support($format)) {
  28. return $encoder;
  29. }
  30. }
  31. throw new \RuntimeException('no encoder found for this export request');
  32. }
  33. }