Як визначати не спільні сервіси

Дата оновлення перекладу 2024-06-05

Як визначати не спільні сервіси

У сервіс-контейнері всі сервіси є спільними за замовчуванням. Це означає, що кожний раз, коли ви викликаєте цей сервіс, ви отримуватимете один і той же екземпляр. Зазвичай, це та поведінка, якої ви хочете, але у деяких випадках, ви можете захотіти завжди отримувати новий екземпляр.

Щоб отримувати новий екземпляр кожний раз, встановіть налаштування 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 з контейнера, вам буде передано новий екземпляр.