OptionalsRolesIterator.php 785 B

12345678910111213141516171819202122232425262728293031
  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. * @param iterable<OptionalsRolesInterface> $optionalsRoles
  9. */
  10. public function __construct(readonly private iterable $optionalsRoles)
  11. { }
  12. /**
  13. * @param Access $access
  14. * @return list<string>
  15. */
  16. public function getOptionalsRoles(Access $access):array {
  17. $roles = [];
  18. /** @var OptionalsRolesInterface $optionalsRoles */
  19. foreach ($this->optionalsRoles as $optionalsRoles){
  20. if($optionalsRoles->support($access)) {
  21. $roles[] = $optionalsRoles->getRole();
  22. }
  23. }
  24. return $roles;
  25. }
  26. }