Игорь, комментарий относился только к цитате, а не к вопросу целиком. Судя по коду вы делаете это не оптимально. Что есть итераторы, что их нет - разницы не будет.
Flying, не спорю. Но реализуется за пару минут если ты уже с этим работал. С первого раза не думаю что все так быстро получится. Ну и раздувает кодовую базу, когда можно обойтись без этого
По-умолчанию все сервисы в Symfony - shared (aka синглтоны). Только обращаться к ним нужно, добавив в конструктор, а не обращаясь к статичным свойствам класса.