= 5.5 */ class GeneratorStrategy implements TraversalStrategyInterface { /** * @param RoleInterface[]|Traversable $roles * @return Generator */ public function getRolesIterator($roles) { foreach ($roles as $role) { yield $role; if (!$role instanceof HierarchicalRoleInterface) { continue; } $children = $this->getRolesIterator($role->getChildren()); foreach ($children as $child) { yield $child; } } } }