Служба Symfony 2 с несколькими экземплярами?

Я читал это: http://symfony.com/doc/current/book/service_container.html

Он сказал:

$mailer = $this->get('my_mailer');

В качестве дополнительного бонуса услуга Mailer создается только один раз, а тот же экземпляр возвращается каждый раз, когда вы запрашиваете услугу. Это почти всегда поведение, в котором вы нуждаетесь (оно более гибкое и мощный), , но мы узнаем позже, как вы можете настроить службу, которая имеет несколько экземпляров.

Как сделать мой сервис иметь несколько экземпляров - т.е. когда я дойду до службы, мне прислан новый экземпляр? Что-то вроде $this->getNew() или что-то?

Ответ 1

Вы говорите о сфере обслуживания. Вы можете посмотреть их здесь. Короче говоря, определите свою службу как прототип области, а не контейнер по умолчанию, и контейнер инъекции зависимостей будет заботиться о создании нового объекта каждый раз, когда вы его запросите:

services:
    my_service:
        class: Someclass
        scope: prototype

Примечание: поскольку Symfony2.8, scope: prototype заменен на shared: false.

# Symfony >= 2.8
services:
    my_service:
        class: Someclass
        shared: false