Как использовать singleton?

Только начал изучение Symfony после Larael и Yii, но не могу понять как использовать singleton в рамках Symfony.

В общем предполагается создать класс Setting:

<?php

namespace App\Service;

class Setting
{
    private static $instance;

    private array $settings;

    protected function __construct() {}

    public function get($key)
    {
        if (empty($settings)) {
            $this->settings = // тут каким-то образом сделать запрос к базе
        }
        
        return $this->settings[$key] ?? null;
    }

    public static function getInstance(): self
    {
        if (null === static::$instance) {
            static::$instance = new static();
        }

        return static::$instance;
    }
}


Но не понимаю каким образом я могу сделать запрос к базе. И потом использовать этот класс как в контроллерах так и в шаблонах twig.

Решил пойти через сервисы, с базой проблемы нет, в конструкторе у меня EntityManagerInterface, но дальше не пойму. В контроллере я также через DI, в шаблоне через глобальную переменную. Но в итоге symfony делает кучу запросов к базе, так как видимо сервис это не singleton.

В какую сторону копать? Уже всю голову сломал.
  • Вопрос задан
  • 487 просмотров
Пригласить эксперта
Ответы на вопрос 1
@galliard
Никак. Не надо использовать синглтоны, тем более в симфони. Синглтон === говнокод.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы