Sobes.tech
Junior — Middle
101

Можешь ли ты объяснить концепцию паттерна Singleton и привести пример его использования?

Ответ от нейросети

sobes.tech AI

Паттерн Singleton гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. Это полезно, когда нужно контролировать доступ к какому-то ресурсу, например, к базе данных или конфигурации.

В PHP Singleton обычно реализуется через приватный конструктор, статическое свойство для хранения экземпляра и статический метод для получения этого экземпляра:

class Singleton {
    private static ?Singleton $instance = null;

    private function __construct() {
        // приватный конструктор запрещает создание экземпляров извне
    }

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

    public function doSomething() {
        echo "Выполняю действие";
    }
}

// Использование:
$singleton = Singleton::getInstance();
$singleton->doSomething();

Такой подход гарантирует, что объект создастся только один раз, и везде в коде будет использоваться один и тот же экземпляр.