| 1234567891011121314151617181920212223242526272829303132333435363738 |
- <?php
- declare(strict_types=1);
- namespace App\Service\ServiceIterator;
- use App\Service\Export\Encoder\EncoderInterface;
- /**
- * Permet d'itérer sur les services d'encodage.
- */
- class EncoderIterator
- {
- /**
- * Pour l'injection des services, voir config/services.yaml, section 'TAG Services'.
- *
- * @param iterable<EncoderInterface> $encoders
- */
- public function __construct(
- private readonly iterable $encoders,
- ) {
- }
- /**
- * Itère sur les services d'encodage disponibles et
- * retourne le premier qui supporte ce type de requête.
- */
- public function getEncoderFor(string $format): EncoderInterface
- {
- /** @var EncoderInterface $encoder */
- foreach ($this->encoders as $encoder) {
- if ($encoder->support($format)) {
- return $encoder;
- }
- }
- throw new \RuntimeException('no encoder found for this export request');
- }
- }
|