Как определять необщие сервисы¶
В сервис-контейнере, все сервисы являются общими по умолчанию. Это означает, что каждый раз, когда вы вызываете этот сервис, вы будете получать один и тот же экземпляр. Обычно, это то поведение, которого вы и хотите, но в некоторых случаях, вы можете захотеть всегда получать новый экземпляр.
Чтобы получать новый экземпляр каждый раз, установите настройку shared
в
значение false
в вашем определении сервиса:
- YAML
1 2 3 4 5
# app/config/services.yml services: AppBundle\SomeNonSharedService: shared: false # ...
- XML
1 2 3 4
<!-- app/config/services.xml --> <services> <service id="AppBundle\SomeNonSharedService" shared="false" /> </services>
- PHP
1 2 3 4 5 6
// app/config/services.php use Symfony\Component\DependencyInjection\Definition; use AppBundle\SomeNonSharedService; $container->register(SomeNonSharedService::class) ->setShared(false);
Теперь, каждый раз, когда вы запрашиваете AppBundle\SomeNonSharedService
из
контейнера, вам будет передан новый экземпляр.
Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.