OptionalsRolesIterator.php 768 B

12345678910111213141516171819202122232425262728293031323334
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Service\ServiceIterator;
  4. use App\Entity\Access\Access;
  5. use App\Service\Access\OptionalsRolesInterface;
  6. class OptionalsRolesIterator
  7. {
  8. /**
  9. * @param iterable<OptionalsRolesInterface> $optionalsRoles
  10. */
  11. public function __construct(readonly private iterable $optionalsRoles)
  12. {
  13. }
  14. /**
  15. * @return list<string>
  16. */
  17. public function getOptionalsRoles(Access $access): array
  18. {
  19. $roles = [];
  20. /** @var OptionalsRolesInterface $optionalsRoles */
  21. foreach ($this->optionalsRoles as $optionalsRoles) {
  22. if ($optionalsRoles->support($access)) {
  23. $roles[] = $optionalsRoles->getRole();
  24. }
  25. }
  26. return $roles;
  27. }
  28. }