CurrentAccessExtensionIterator.php 659 B

12345678910111213141516171819202122
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Service\ServiceIterator;
  4. use App\Doctrine\Access\AccessExtensionInterface;
  5. use Doctrine\ORM\QueryBuilder;
  6. use Exception;
  7. class CurrentAccessExtensionIterator{
  8. public function __construct(private iterable $extensions)
  9. { }
  10. public function addWhere(QueryBuilder $queryBuilder, $operationName){
  11. /** @var AccessExtensionInterface $extension */
  12. foreach ($this->extensions as $extension){
  13. if($extension->support($operationName))
  14. return $extension->addWhere($queryBuilder);
  15. }
  16. throw new Exception('no extension found for this operation');
  17. }
  18. }