Как определять необщие сервисы

Дата обновления перевода 2024-07-27

Как определять необщие сервисы

В сервис-контейнере, все сервисы являются общими по умолчанию. Это означает, что каждый раз, когда вы вызываете этот сервис, вы будете получать один и тот же экземпляр. Обычно, это то поведение, которого вы и хотите, но в некоторых случаях, вы можете захотеть всегда получать новый экземпляр.

Чтобы получать новый экземпляр каждый раз, установите настройку shared в значение false в вашем определении сервиса:

1
2
3
4
5
6
7
8
9
10
// src/SomeNonSharedService.php
namespace App;

use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;

#[Autoconfigure(shared: false)]
class SomeNonSharedService
{
    // ...
}

Теперь, каждый раз, когда вы запрашиваете AppBundle\SomeNonSharedService из контейнера, вам будет передан новый экземпляр.