CurrentAccessExtensionIterator.php 768 B

1234567891011121314151617181920212223242526272829
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Service\ServiceIterator;
  4. use App\Doctrine\Access\AdditionalExtension\AdditionalAccessExtensionInterface;
  5. use Doctrine\ORM\QueryBuilder;
  6. class CurrentAccessExtensionIterator
  7. {
  8. /**
  9. * @param iterable<AdditionalAccessExtensionInterface> $extensions
  10. */
  11. public function __construct(private readonly iterable $extensions)
  12. {
  13. }
  14. public function addWhere(QueryBuilder $queryBuilder, string $operationName): void
  15. {
  16. /** @var AdditionalAccessExtensionInterface $extension */
  17. foreach ($this->extensions as $extension) {
  18. if ($extension->support($operationName)) {
  19. $extension->addWhere($queryBuilder);
  20. break;
  21. }
  22. }
  23. }
  24. }